我目前正在开发一个使用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>
非常感谢任何帮助。
答案 0 :(得分:2)
尝试
@model.elements << @element
答案 1 :(得分:0)
collection.create(attributes = {})
返回已使用属性实例化的集合类型的新对象,通过连接表链接到此对象,并且已保存。
@model.elements.create(:name => "example")
答案 2 :(得分:0)
Amar的回答是正确的。如果您愿意,可以使用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