2014-01-07 65 views
0

我似乎無法弄清楚如何通過沒有活動會話的記錄自動創建has_many。自動創建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 

在我型我秀樹視圖有一個按鈕,創建一個新的家庭,並傳遞樹的ID作爲URL參數

<%= link_to "Add Family to Tree", new_family_path(:tree_id=>@tree.id), :class => "btn btn-default" %> 

供參考:我不能擁有一個家族屬於樹模型,因爲從理論上講,我選擇一個家族在未來屬於多棵樹。所以沒有tree_id字段預填充新的家庭表單。

目標是在家庭記錄保存後創建家庭聯繫記錄。到目前爲止,我已經創建了associate_family helper方法:

def associate_family(tree, family) 
    FamilyAssociation.create(:tree_id => tree, :family_id => family) 
end 

在我的家庭控制器的創建方法包括以下邏輯:創建

if @family.save 
     associate_family(params[:tree_id], @family.id) 

的關聯記錄,但不奇怪的是,tree_id丟失。我是否以正確的方式去做這件事?有沒有什麼辦法暫時將tree_id url參數從New添加到Create?

回答

1

根據你的模型,我認爲你正在試圖製造一棵家庭樹。如果是這種情況,那麼我建議你使用Ancestry gem和更多的信息,你可以看到它的railscast

如果你想堅持通過has_many:通過關聯,並希望從新創建臨時傳遞它,我已經完成了你已經完成的方式。我也不知道其他選項。