Position
フィールドstarted_at
とを持つモデルがありended_at
、どちらもdatetime
フィールドです。両方の日付部分が同じである必要があるため、datetime_select
フォーム フィールドは for ですが、 forstarted_at
しかありません。メソッドでは、次のように日付の値を割り当てたいと思います:time_select ignore_date: true
ended_at
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)"]
しかし、これはコントローラーの仕様を壊しました。値を直接割り当てるためです。
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
たぶん、より良い解決策がありますか?ご意見ありがとうございます。