2010-05-04 11 views
0

Je le modèle suivantemboîtées Forms ne passe pas belongs_to: id

class Project < ActiveRecord::Base 
    has_many :assignments, :conditions => {:deleted_at => nil} 
    has_many :members, :conditions => {:deleted_at => nil} 
    accepts_nested_attributes_for :members, :allow_destroy => true 
end 

class Member < ActiveRecord::Base 
    belongs_to :project 
    belongs_to :person 
    belongs_to :role 

    has_many :assignments, :dependent => :destroy, :conditions => {:deleted_at => nil} 
    accepts_nested_attributes_for :assignments, :allow_destroy => true 


    validates_presence_of  :role_id 
    validates_presence_of  :project_id 
end 

et je suppose que le contrôleur remplira le member.project_id sur project.save pour chaque enregistrement de membre imbriqué. Cependant, j'obtiens une erreur de validation indiquant que project_id est vide.

Ma méthode de commande:

def create 
    # @project is created in before_filter 
    if @project.save 
     flash[:notice] = "Successfully created project." 
     redirect_to @project 
    else 
     render :action => 'new' 
    end 
    end 

Ai-je besoin de régler manuellement le project_id dans chaque enregistrement de membre imbriqué? Ou qu'est-ce que le contrôleur doit remplir lorsqu'il crée les enregistrements de membre?

Répondre

2

Créer l'objet Member comme ceci:

@member = @project.members.build 
+1

Est-ce que necessitate @project être sauvé déjà à la DB? J'essaye de cloner un projet existant avec ses membres et d'enregistrer avec un nouveau project_id tout à la fois. –