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 回答