2013-01-08 118 views
0

父對象我在ActiveRecord的軌道爲的has_many關係下面的代碼庫:如何一個一對多對象添加到使用ActiveRecord

class Foo < ActiveRecord::Base 
    has_many :foo_bars 
end 

class Bar < ActiveRecord::Base 
end 

class FooBar < ActiveRecord::Base 
    belongs_to :foo 
    belongs_to :bar 
end 

我如何創建過程中添加FooBar的條目美孚。 這是我的代碼如下:

@foo = Foo.create(params[:foo]) 
bars = params[:bars] # bars in a array of string format 
bar_ids = bars.collect{|b| b.to_i} 

@foo.foo_bars << bar_ids 
@foo.save 

回答

1

@foo = Foo.create(params[:foo]) 
@foo.foo_bars << params[:bars].map {|s| FooBar.new(:bar_id => s.to_i)} 
@foo.save 

試試看建立每個ID的新FooBar實例params[:bars]收藏。最後的save將創建@fooFooBar。請參閱doc here獲取關於協會的幫助。

對於版本:

@foo = Foo.find(params[:id]) 
@foo.foo_bars = params[:bars].map {|s| @foo.foo_bars.where(:bar_id => s.to_i).first_or_initialize } 
+0

感謝您的快速反應!有效 ! – diya

+0

但是我怎樣才能實現這個編輯(更新方法)? – diya

+0

@diya我已經更新了我的版本答案;這個想法是如果'bar_id'匹配找到現有的'FooBar',或者創建新的。 – Baldrick

相關問題