对于我正在编写的应用程序,我使用简单的手工身份验证(如Railscast.com上所述).使用Ryan Bates的NiftyGenerators gem中的一些代码,我有一个身份验证模型,它有一些有用的身份验证方法.该模块包含在内application_controller.rb.
我想要使用的方法之一是调用redirect_to_target_or_default.我知道这是我需要将用户重定向到他们经过身份验证后所在的页面,但我不知道应该在哪里调用此方法?如果有人能给我一个如何使用这种方法的想法,我将不胜感激.
ControllerAuthenticaion模块代码
module ControllerAuthentication
# Makes these methods helper methods in the controller that includes this module.
def self.included(controller)
controller.send :helper_method,
:current_admin, :logged_in?,
:redirect_to_target_or_default
end
def current_admin
@current_admin ||= Admin.find(session[:admin_id]) if session[:admin_id]
end
def logged_in?
current_admin
end
def login_required
unless logged_in?
store_target_location
redirect_to login_url,
:alert => "You must first log in before accessing this page."
end
end
def redirect_to_target_or_default(default, *args)
redirect_to(session[:return_to] || default, *args)
session[:return_to] = nil
end
def redirect_to_or_default(target, *args)
redirect_to(target || …Run Code Online (Sandbox Code Playgroud) 假设您有一个简单的表单来在您的应用程序中创建新的文章对象.
<% form_for @article do |f| %>
<p>
name:<br />
<%= f.text_field :name %>
</p>
<p>
link:<br />
<%= f.text_field :link %>
</p>
<p>
<%= submit_tag %>
</p>
Run Code Online (Sandbox Code Playgroud)
我正在使用RSS提要解析器Feedtools来获取文章名称,但我似乎无法从其他地方可访问的数据中自动填写表单字段.假设文章的名称可以访问params[:name].如何在不需要用户输入文章的情况下将文章的名称从params[:name](或params[:link]为此)获取到表单字段中?我不想自动创建文章对象,因为用户可能想稍微修改名称.
在通过发布请求调用的操作中,我创建资源调用并使用创建的资源作为参数RequestOffer发送电子邮件:ActionMailer
@request_offer = RequestOffer.new(request_offer_params)
if @request_offer.save
RequestOfferMailer.email_team(@request_offer).deliver_later
end
Run Code Online (Sandbox Code Playgroud)
当我的控制器规范时,我想测试是否使用以资源作为参数的RequestOfferMailer方法调用我的控制器。email_team@request_offer
当我想要 user 时expect(XXX).to receive(YYY).with(ZZZ),我发现的唯一方法是在发出 POST 请求之前声明我的期望。然而,ZZZ是由这个POST请求创建的,所以我之前没有办法设定我的期望。
# Set expectation first
message_delivery = instance_double(ActionMailer::MessageDelivery)
# ZZZ used in .with() does not exist yet, so it won't work
expect(RequestOfferMailer).to receive(:email_team).with(ZZZ).and_return(message_delivery)
expect(message_delivery).to receive(:deliver_later)
# Make POST request that will create ZZZ
post :create, params
Run Code Online (Sandbox Code Playgroud)
知道如何解决这个问题吗?
我想打印在我的Heroku服务器上设置的所有环境变量。我该如何仅使用命令行呢?
我在 RSpec 中有一个共享示例,它测试 SMS 发送。在我的应用程序中,我有几个发送短信的方法,所以我想参数化我测试的代码,以便我可以将我的共享示例用于我的所有方法。我发现做到这一点的唯一方法是使用eval函数:
RSpec.shared_examples "sending an sms" do |action_code|
it "sends an sms" do
eval(action_code)
expect(WebMock).to have_requested(**my_request**).with(**my_body**)
end
end
Run Code Online (Sandbox Code Playgroud)
所以我可以这样使用这个例子:
it_behaves_like "sending an sms",
"post :accept, params: { id: reservation.id }"
it_behaves_like "sending an sms",
"post :create, params: reservation_attributes"
Run Code Online (Sandbox Code Playgroud)
在不使用函数的情况下如何实现这一目标eval?我尝试将模式与yield命令一起使用,但由于范围的原因它不起作用:
失败/错误:post:create,params:reservation_attributes 在示例组(例如 a或块)
reservation_attributes上不可用。它只能从单个示例(例如块)中或在示例范围内运行的构造(例如,, 等)中获得。describecontextitbeforelet
我想要做的是通过 AppSync 从 React Native 应用程序发送数据,以便我可以更新 dynamo 表上的用户数据。我可以执行我所有的 CRUD 操作,而不是数据列表。当我尝试时,我收到一个错误,指出我发送的不是有效的 JSON。但是,当我将输入通过 JSON linter 时,我的输入将作为有效的 JSON 传递。
为了尝试解决这个问题,我已将输入流程更改为最简单的流程。最初我是从本地缓存的解析 JSON 字符串中提取我的 JSON。我认为 JSON.parse(obj) 函数可能存在问题。那是站不住脚的。因此,我将所有输入从 JS 对象移到了一个 JSON 中,该 JSON 未预先存储在变量中,而是直接传递给我正在使用的 API(https://aws-amplify.github.io/docs /js/api)。
在这不起作用之后,我想也许我的 GraphQL Schema 对于我发送的对象类型是错误的,但没有发现任何问题。
我在 AppSync 中使用 GraphQL 的架构定义如下:
input CreateUserInput {
email: String!
data: AWSJSON
}
Run Code Online (Sandbox Code Playgroud)
我发送的请求如下:
const dbReturn = await API.graphql(graphqlOperation(
mutations.createUser, {
input: {
"email": "fake.email@atdot.com",
"data": [{
"num": 34,
}]
}
}
));
Run Code Online (Sandbox Code Playgroud)
错误消息说:
“变量‘数据’的值无效。无法将 [{num=34}] 解析为有效的 JSON。”
令我困惑的是,这"[{num=34}]"不是我给它的输入。我正在发送它"[{"num": 34}]"是有效的 …
我向fullcalendar添加了一个新事件,它显示得很好,但是当我下个月转回去时,它就消失了!但旧的事件显示得很好,为什么?如何显示所有活动?
细节如:
有人能帮帮我吗?谢谢!
我在一个驱动器的不同目录中都有备份文件。这些目录中的文件可能很大,可达 800GB 左右。所以我有一个批处理文件,其中包含一组将文件上传/同步到 S3 的脚本。
请参阅下面的示例:
aws s3 sync R:\DB_Backups3\System s3://usa-daily/System/ --exclude "*" --include "*/*/Diff/*"
上传时间可能会有所不同,但到目前为止一切都很好。
我的问题是,如何编辑脚本或创建一个新脚本来检查 s3 存储桶中的文件是否已上传,并且仅当文件已上传时才从本地驱动器中删除它们,如果没有将它们保留在驱动器上?
(理想情况下它会检查每个文件)
我不熟悉 aws s3 或可以执行此操作的 aws cli 命令吗?如果我说得很清楚或者您需要更多详细信息,请告诉我。
任何帮助将不胜感激。
我开始使用 Docker 处理一个新项目,我可以看到那里没有docker-compose.yml文件,但有一些文件docker-compose.myname1.yml,docker-compose.myname2.yml例如 , 。尝试运行时docker-compose up出现错误:
ERROR:
Can't find a suitable configuration file in this directory or any
parent. Are you in the right directory?
Supported filenames: docker-compose.yml, docker-compose.yaml
Run Code Online (Sandbox Code Playgroud)
所以我想知道 Docker 项目是否可以在没有该docker-compose.yml文件的情况下运行,如果可以,应该满足什么条件。也许这是某些特定版本或环境的问题?
我想在 Rails 中对 ActiveRecord 进行这样的查询Services:
SELECT *
FROM "services" AS s
WHERE /* part using 's' alias */
Run Code Online (Sandbox Code Playgroud)
通常我只会写Service.where(/* where part */),但我需要设置我的别名。
我尝试运行ActiveRecord::Base.connection.execute(query),但结果不被识别为Service。
我该如何处理?
rspec ×2
amazon-s3 ×1
aws-appsync ×1
aws-cli ×1
batch-file ×1
docker ×1
dry ×1
events ×1
forms ×1
fullcalendar ×1
heroku ×1
javascript ×1
postgresql ×1
powershell ×1
ruby ×1
sql ×1