2013-09-27 1 views
0

J'ai trois modèleshas_many à travers comment obtenir l'objet intermédiaire?

JobRole JobRoleCompetencies Compétences

class JobRole 
    has_many :job_role_competencies 
    has_many :competencies, :through => :job_role_competencies 
end 

JobRoleCompetencies a champ supplémentaire - min_rate

Lorsque je crée nouveau modèle j'attribue des compétences comme JobRole.new(competency_ids: [1,2]) et après que je veux attribuer min ' taux », mais quand je vérifie JobRole.new(competency_ids: [1,2]).job_role_competencies - rien là - comment puis-je obtenir (ou construire) cet objet intermédiaire.

Répondre

1

Est-ce ce que vous cherchez?

@job_role = JobRole.new 
[1, 2].each do |competency_id| 
    @job_role.job_role_competencies.build(:min_rate => min_rate, :competency_id => competency_id) 
end 
+0

après l'enregistrement, vous obtenez deux enregistrements job_role_competencies - avec min_rate et sans - des thats le principal problème – Vladimir

+0

ce qui est possible - les valeurs de mise à jour dans after_create rappel mais je veux attribuer ces valeurs avant la validation – Vladimir

+0

S'il vous plaît vérifier ma réponse à jour. – depa

Questions connexes