gpt4 book ai didi

ruby-on-rails - 检查 Controller 的方法是从真实请求还是从 Controller 规范调用的?

转载 作者:行者123 更新时间:2023-11-28 21:33:12 24 4
gpt4 key购买 nike

我有一个模型 Position,它有一个字段 started_atended_at,它们都是 datetime 字段。因为两者的日期部分必须相同,所以我有一个 datetime_select 表单字段用于 started_at 但只有一个 time_select ignore_date: true 用于 结束于。在 create 方法中,我想将 started_at 的日期值分配给 ended_at,如下所示:

params[:position]["ended_at(1i)"] = params[:position]["started_at(1i)"]
params[:position]["ended_at(2i)"] = params[:position]["started_at(2i)"]
params[:position]["ended_at(3i)"] = params[:position]["started_at(3i)"]

但这打破了我的 Controller 规范,因为我在那里直接分配了值:

describe "POST create" do
describe "with valid params" do
it "creates a new Position" do
expect {
post :create, {:position => valid_attributes}, valid_session
}.to change(Position, :count).by(1)
end
end
end

所以我最终得到了这个,但我不确定这是否是一个合理的修复:

if params[:position]["ended_at(1i)"].nil? and not params[:position]["started_at(1i)"].nil? # We have to check this because in the controller specs we assign the params directly (not in this crazy xxx_at(yi) form for dates), so by checking this we know that the data was sent through the form
params[:position]["ended_at(1i)"] = params[:position]["started_at(1i)"]
params[:position]["ended_at(2i)"] = params[:position]["started_at(2i)"]
params[:position]["ended_at(3i)"] = params[:position]["started_at(3i)"]
end

也许有更好的解决方案?感谢您的意见。

最佳答案

如果 Controller 需要特定格式的属性,规范应该以该格式提供它们。调整 valid_attributes,使其以与表单相同的方式分隔日期和时间元素,规范应该通过。

关于ruby-on-rails - 检查 Controller 的方法是从真实请求还是从 Controller 规范调用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11939911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com