我似乎想不出如何在没有活动会话的情况下通过记录自动创建has_many。
我有两个通过family_association模型关联的模型:
class Tree < ActiveRecord::Base 
has_many :family_associations
has_many :families, through: :family_associations
end
class Family < ActiveRecord::Base 
has_many :family_associations
has_many :trees, through: :family_associations
end在我的Show Tree视图中,有一个按钮用于创建新的Family,并将Tree的id作为url参数进行传递
<%= link_to "Add Family to Tree", new_family_path(:tree_id=>@tree.id), :class => "btn btn-default" %>仅供参考:我不能使用家庭belongs_to树模型,因为从理论上讲,一个家庭将来可能会选择属于多个树。因此,在新的Family表单上没有要预先填充的tree_id字段。
目标是在保存家庭记录后创建家庭关联记录。到目前为止,我已经创建了associate_family助手方法:
 def associate_family(tree, family)
    FamilyAssociation.create(:tree_id => tree, :family_id => family)
 end并在我的Family控制器的Create方法中包含了以下逻辑:
    if @family.save
       associate_family(params[:tree_id], @family.id)关联记录已创建,但并不奇怪,缺少tree_id。我这样做对吗?有没有办法临时把tree_id url参数从新建带到创建?
发布于 2014-01-08 02:19:32
根据你的模型,我认为你正在尝试制作一棵家庭树。如果是这样的话,我建议你使用Ancestry gem,有关更多信息,你可以查看它的railscast。
如果你想坚持通过has_many :通过关联,并想把它暂时从新传递到创建,我已经按照你所做的做了。我也不知道还有其他的选择。
https://stackoverflow.com/questions/20978621
复制相似问题