2016-11-28 77 views
0

我得到像這樣的參數:Parameters: {"utf8"=>"✓", "events"=>{"363"=>{"name"=>"3"}}, "new_events"=>[{"name"=>"1"}, {"name"=>"2"}], "date"=>"2016-11-01"} 我想要做的是從new_events陣列的哈希創建事件,但它並沒有讓我因爲它neets被大量分配消毒。 這是event_params的樣子:Rails批量創建陣列散列

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

正確的方式你應該能夠消毒的參數數組:

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! 
+0

new_events不是事件的成員。 –

+0

new_events與事件哈希分離,它是一個哈希數組。我試圖同時創建和更新 –