Rails的HAS_ONE协会
我有三个型号: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
我如何添加一个新Form3C
到Basiccase
?我是否需要使用Basiccase
控制器或Form3C
控制器来创建表单?如果我使用Form3cController
我怎么可以设置在BasiccaseController?
像has_one
这样的关系是在模型而不是控制器上定义的。我想你想这(能够添加一个Form3c
的Basiccase
--not确定要的关系往哪个方向走):
class Form3c < ActiveRecord::Base
belongs_to :basiccase
end
class Basiccase < ActiveRecord::Base
belongs_to :user
has_one :form3c
end
有关生成控制器和形式(视图)的提示,看在this Rails tutorial处,从第6部分开始。
我真的很困惑在哪里保持has_one关系,因为两者都是一对一的。我的要求是用户应该能够添加新的表单到一个基本的case.Can你建议我如何做到这一点? – 2012-03-24 18:26:18
外键虽然模型的命名是不是有说服力的,我假设你basiccases
表中有一列form3c_id
。
您需要创建form3c
对象的窗体,然后在控制器,你可以建立一个basiccase
对象像@form3c_build_basiccase
,它会自动采取form3c_id
为外键。请参阅this rails cast。
或者你可以去form3c
模型accepts_nested_attributes_for :basiccase
。关于它here。
'has_one'关系应该放入模型中,而不是控制器。所以如果你有一个'Form3C'模型类,试着在那里添加关系。 'has_one'关系应该和'has_one:basiccase'一样。您通常会从Form3C实例构建'Basiccase':'self.build_basiccase'将构建'belongs_to'' Form3C'的基本案例。 – mliebelt 2012-03-24 17:52:02