我得到这样的参数:Parameters: {"utf8"=>"✓", "events"=>{"363"=>{"name"=>"3"}}, "new_events"=>[{"name"=>"1"}, {"name"=>"2"}], "date"=>"2016-11-01"}
我想要做的是从new_events哈希数组中创建事件,但它不允许我因为它需要对大规模分配进行消毒。
这就是event_params的样子:
def event_params
params.require(:events).permit(:id, :name, :start_time, :user_id)
end
此设置是因为我想在按提交时更新和/或创建新记录。 我这样做的当前方式是
params[:new_events].each_with_object({}) do |e|
Event.create(name: e[:name], user_id: current_user.id, start_time: params[:date])
end
但我不确定这是正确的做法
答案 0 :(得分:0)
您应该能够清理参数数组:
params.require(:events).permit(new_events: [:name])
Event.create(params[:new_events] do |new_event|
new_event.user = current_user
end
但是请注意,无论如何你都必须遍历这些物体,所以它并没有太大的区别。您可能只想使用Event.new
进行循环并将其作为一组进行验证:
events = Event.new(params[:new_events]) do |new_event|
new_event.user = current_user
...
end
if events.any?(&:invalid?)
[error handling]
else
events.save!