has_many有两个has_one's

时间:2011-07-28 14:51:32

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

我有一个拥有很多父母的用户模型。 我希望那个用户模型有一个父亲和一个母亲。

所以我的班级Parent_to user

目前我有

class User < ActiveRecord::Base
  has_many :parents

  has_one :father, :class_name => 'Parent', :foreign_key => 'user_id', :conditions => {:type => 'male'}
  has_one :mother, :class_name => 'Parent', :foreign_key => 'user_id', :conditions => {:type => 'female'}
end

class Parent < ActiveRecord::Base
  belongs_to :user
end

问题出在我的控制器上。

...
def edit
  @user = User.find(params[:id])
  @user.mother = Parent.new(:type => 'female')
  @user.father = Parent.new(:type => 'male')
...

当我进入编辑时,它会创建并将2个父项引入数据库,甚至不会更改表单中的任何内容。例如,当我单击用户的编辑时,我会转到编辑页面。当我查看数据库时,它们已经被创建了。

我的表格如下:

= form_for @user do |f|
  = f.fields_for :father do |father_form|
    etc...
  = f.fields_for :mother do |mother_form|
    etc...

我已经尝试在我的控制器中单独执行此操作:

...
@user.parents.build(:type => 'male')
@user.parents.build(:type => 'female')
...

但表格没有出现。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

尝试使用

@user.build_father(:type => 'male')
@user.build_mother(:type => 'female')

而不是

@user.mother = Parent.new(:type => 'female')
@user.father = Parent.new(:type => 'male')

在你的行动中