我有一个协会:
class ParentChild < ActiveRecord::Base
attr_accessible :parent_id, child_id, position
belongs_to class2, :foreign_key => "child_id"
end
class Parent< ActiveRecord::Base
has_many parent_child
has_many Parent, through: :parent_child
end
它可以创建父级并关联另一个父级:
Parent.create.parents << Parent.create
但是可以设置一个额外的属性,在这种情况下是ParentChild模型中的position属性吗?
这样的事情:
parent.parents << Parent.create, 3
答案 0 :(得分:0)
您可以直接创建ParentChild
记录:
grand_parent = Parent.create
relationship = ParentChild.create(
parent_id: grand_parent.id,
child_id: parent.id,
position: 3
)
答案 1 :(得分:0)
如果你想在写作时使它工作,你需要使用关系扩展:
has_many :parents, :through => :parent_child do
def << (parent_object, position)
proxy_association.owner.parent_child.create(:child_id => parent_object.id, :position => position)
end
alias :add, :<<
end