1

我在 ActiveRecord rails 中有以下 has_many 关系的代码库:

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 = 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
4

1 回答 1

1

尝试

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

它为集合FooBar中的每个 id构建一个新实例。params[:bars]决赛save将创建@fooFooBar。有关关联的帮助,请参见此处的文档。

对于版本:

@foo = Foo.find(params[:id])
@foo.foo_bars = params[:bars].map {|s| @foo.foo_bars.where(:bar_id => s.to_i).first_or_initialize }  
于 2013-01-08T08:13:49.440 回答