[英]Rails mass create from array of hash
我得到这样的Parameters: {"utf8"=>"✓", "events"=>{"363"=>{"name"=>"3"}}, "new_events"=>[{"name"=>"1"}, {"name"=>"2"}], "date"=>"2016-11-01"}
: Parameters: {"utf8"=>"✓", "events"=>{"363"=>{"name"=>"3"}}, "new_events"=>[{"name"=>"1"}, {"name"=>"2"}], "date"=>"2016-11-01"}
我想做的是根据new_events哈希数组创建Events,但是不让我来,因为它需要进行大规模分配以进行消毒。 这是event_params的样子:
def event_params
params.require(:events).permit(:id, :name, :start_time, :user_id)
end
此设置是因为我想在按Submit时更新和/或创建新记录。 我目前的做法是
params[:new_events].each_with_object({}) do |e|
Event.create(name: e[:name], user_id: current_user.id, start_time: params[:date])
end
但是我不确定这是正确的方法
您应该能够清除参数数组:
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!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.