I have a User model that has_many parents.
I want that user model to have one father and one mother.
So my class Parent belongs_to user
Currently I have
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
The problem is in my controller.
...
def edit
@user = User.find(params[:id])
@user.mother = Parent.new(:type => 'female')
@user.father = Parent.new(:type => 'male')
...
When I go into the edit, it creates and throws the 2 parents into the database without even having changed anything in the form. For example, when I click edit on a user, I go to the edit page. When I look into the database, they’re already created.
My form looks like so:
= form_for @user do |f|
= f.fields_for :father do |father_form|
etc...
= f.fields_for :mother do |mother_form|
etc...
I’ve tried doing something alone the lines of this in my controller:
...
@user.parents.build(:type => 'male')
@user.parents.build(:type => 'female')
...
But the form doesn’t show up.
Any help would be greatly appreciated.
Try to use
instead of
in your action