0

私は現在、Ruby On Rails 3.2 を使用していくつかのユニークなモデルを含むデータベースを作成する小さなプロジェクトに取り組んでいます。各モデルには多くの要素があり、各要素は多くのモデルに属する可能性があります。次の方法でモデルを設定できました。

class Model < ActiveRecord::Base
  has_many :model_elements
  has_many :elements, :through => :model_elements
  attr_accessible :elements, :name, :notes, :ref
end

class Element < ActiveRecord::Base
  has_many :model_elements
  has_many :models, :through => :model_elements
  attr_accessible :elementType, :name, :notes, :ref
  validates_presence_of :name
end

class ModelElement < ActiveRecord::Base
  belongs_to :Model
  belongs_to :element
  attr_accessible :model_id, :created_at, :element_id
end

私の質問は、単一のモデルに複数の要素を追加するにはどうすればよいですか? いくつかのドキュメントを見つけようとしましたが、何も見つかりません。現在、私は次のことをしようとしています:

@model.elements = @element

@element は定義済みの要素ですが、次のエラーがスローされます。

undefined method `each' for #<Element:0x007ff803066500>

どんな助けでも大歓迎です。

4

3 に答える 3

2

試す @model.elements << @element

于 2012-08-21T19:23:07.203 に答える
0
collection.create(attributes = {})

属性でインスタンス化され、結合テーブルを介してこのオブジェクトにリンクされ、すでに保存されているコレクション型の新しいオブジェクトを返します。

 @model.elements.create(:name => "example")
于 2012-08-21T19:24:50.490 に答える
0

アマールの答えは正しいです。必要に応じて、has_and_belongs_to_many 関連付けを使用して、モデルをさらに単純化できます。

class Model < ActiveRecord::Base
  has_and_belongs_to_many :elements, :join_table => :model_elements
end

class Element < ActiveRecord::Base
  has_and_belongs_to_many :models, :join_table => :model_elements
end

@model.elements << @element
于 2012-08-21T19:31:51.883 に答える