2012-03-24 165 views
0

我有三個型號:Rails的HAS_ONE協會

class User < ActiveRecord::Base 
    has_many :basiccases 
end 

class Basiccase < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :form3_c 
end 

class Form3C < ActiveRecord::Base 
    has_one :basiccases 
end 

我如何添加一個新Form3CBasiccase?我是否需要使用Basiccase控制器或Form3C控制器來創建表單?如果我使用Form3cController我怎麼可以設置在BasiccaseController?

+0

'has_one'關係應該放入模型中,而不是控制器。所以如果你有一個'Form3C'模型類,試着在那裏添加關係。 'has_one'關係應該和'has_one:basiccase'一樣。您通常會從Form3C實例構建'Basiccase':'self.build_basiccase'將構建'belongs_to'' Form3C'的基本案例。 – mliebelt 2012-03-24 17:52:02

回答

4

has_one這樣的關係是在模型而不是控制器上定義的。我想你想這(能夠添加一個Form3cBasiccase --not確定要的關係往哪個方向走):

class Form3c < ActiveRecord::Base 
    belongs_to :basiccase 
end 

class Basiccase < ActiveRecord::Base 
    belongs_to :user 
    has_one :form3c 
end 

有關生成控制器和形式(視圖)的提示,看在this Rails tutorial處,從第6部分開始。

+0

我真的很困惑在哪裏保持has_one關係,因爲兩者都是一對一的。我的要求是用戶應該能夠添加新的表單到一個基本的case.Can你建議我如何做到這一點? – 2012-03-24 18:26:18

0

外鍵雖然模型的命名是不是有說服力的,我假設你basiccases表中有一列form3c_id

您需要創建form3c對象的窗體,然後在控制器,你可以建立一個basiccase對象像@form3c_build_basiccase,它會自動採取form3c_id爲外鍵。請參閱this rails cast

或者你可以去form3c模型accepts_nested_attributes_for :basiccase。關於它here