Rails has_one关联

时间:2012-03-24 17:13:12

标签: ruby-on-rails ruby-on-rails-3

我有三种模式:

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?

中设置外键

2 个答案:

答案 0 :(得分:4)

has_one这样的关系是在模型而不是控制器上定义的。我想你想要这个(能够将Form3c添加到Basiccase - 不确定你希望关系走向哪个方向):

class Form3c < ActiveRecord::Base
  belongs_to :basiccase
end

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

有关构建控制器和表单(视图)的提示,请查看this Rails tutorial,从第6节开始。

答案 1 :(得分:0)

虽然您对模型的命名并不那么令人信服,但我假设您的basiccases表格中有一列form3c_id

您需要为form3c对象创建一个表单,然后在控制器中,您可以构建一个basiccase对象,如@form3c_build_basiccase,它将自动将form3c_id作为外键。请参阅this rails cast

或者你可以选择form3c模型accepts_nested_attributes_for :basiccase。请参阅here