我有一個模型主菜屬於模型Vin,它本身屬於模型Producteur。在創建模型時初始化子模型
在Entree創建/編輯的表單上,我希望允許用戶定義父Vin和Producteur的屬性以創建它們,或者如果它們存在(基於用戶輸入進行檢索),可以檢索它們。
現在我做主菜new
以下和edit
操作:
@entree = Entree.new
@entree.vin = Vin.new
@entree.vin.producteur = Producteur.new
和使用形式fields_for
幫手,而工作。但是我打算對更多模型有更多的依賴關係,所以我想讓它保持乾燥。我所定義的回調after_initialize
在Vin的模型它執行初始化producteur:
class Vin < ActiveRecord::Base
after_initialize :vin_setup
def vin_setup
producteur = Producteur.new
end
end
和從控制器移除producteur.new
。然而,獲得新動作的錯誤:
未定義的方法`MODEL_NAME」的NilClass:類
的形式,說
<%= fields_for @entree.vin.producteur do |producteur| %>
行我想這意味着after_initialize回調不會像我期望的那樣工作。有什麼我失蹤?另外,如果我在Vin模型中定義after_initialize
方法而不是定義回調,則會出現相同的錯誤。
感謝,這就行了。我認爲既然producteur是一個明確的關聯,它就會認識到它。 – Antoine 2012-03-28 17:36:26