首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自动创建has_many :没有会话的直通记录

自动创建has_many :没有会话的直通记录
EN

Stack Overflow用户
提问于 2014-01-08 02:02:20
回答 1查看 197关注 0票数 0

我似乎想不出如何在没有活动会话的情况下通过记录自动创建has_many。

我有两个通过family_association模型关联的模型:

代码语言:javascript
复制
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参数进行传递

代码语言:javascript
复制
<%= link_to "Add Family to Tree", new_family_path(:tree_id=>@tree.id), :class => "btn btn-default" %>

仅供参考:我不能使用家庭belongs_to树模型,因为从理论上讲,一个家庭将来可能会选择属于多个树。因此,在新的Family表单上没有要预先填充的tree_id字段。

目标是在保存家庭记录后创建家庭关联记录。到目前为止,我已经创建了associate_family助手方法:

代码语言:javascript
复制
 def associate_family(tree, family)
    FamilyAssociation.create(:tree_id => tree, :family_id => family)
 end

并在我的Family控制器的Create方法中包含了以下逻辑:

代码语言:javascript
复制
    if @family.save
       associate_family(params[:tree_id], @family.id)

关联记录已创建,但并不奇怪,缺少tree_id。我这样做对吗?有没有办法临时把tree_id url参数从新建带到创建?

EN

回答 1

Stack Overflow用户

发布于 2014-01-08 02:19:32

根据你的模型,我认为你正在尝试制作一棵家庭树。如果是这样的话,我建议你使用Ancestry gem,有关更多信息,你可以查看它的railscast

如果你想坚持通过has_many :通过关联,并想把它暂时从新传递到创建,我已经按照你所做的做了。我也不知道还有其他的选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20978621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档