2016-04-27 6 views
0

Ich habe eine Frage über die Hat viele durch Beziehung.Hat viele durch nicht bestehen

Ich habe 3 Modelle: Artist, Geschicklichkeit und Beherrschung

skill.rb

class Skill < ActiveRecord::Base 
    has_many :masteries 
    has_many :artists, through: :masteries 
end 

mastery.rb

class Mastery < ActiveRecord::Base 
    belongs_to :artist 
    belongs_to :skill 
end 

artist.rb

class Artist < ActiveRecord::Base 
    has_many :masteries 
    has_many :skills, through: :masteries 
end 

Jedesmal Ich versuche, eine Fähigkeit anzuhängen Ein Artist, der artist.skills << skill verwendet, eine Meisterschaft wird erstellt, aber die artist_id ist Null. Das Gleiche gilt auch umgekehrt. skill.artists << artist gibt mir eine Meisterschaft mit einer Null Skill_ID.

Bedeutet dies, dass ich beide jedes Mal ausführen muss? Oder habe ich etwas vermisst?

+0

es scheint, dass Fähigkeit noch nicht gespeichert ist ... –

+0

Welche Version von ActiveRecord verwenden Sie? – Rashmirathi

+0

@ МалъСкрылевъ Ich benutze die Konsole, um dies zu tun, mit skill = Skill.last und Künstler = Artist.last (Ich stellte sicher, dass beide existieren) –

Antwort

0

Also im Grunde ist hier, warum es fehlgeschlagen: Es scheint, dass Sie es nicht in Rails-Konsole unter bestimmten unklaren Umständen setzen können. Wenn Sie jedoch das gleiche Modell-Setup wie ich haben, funktioniert die Verwendung der model.attributes << attribute Syntax gut. Wenn Sie in Ihrer Rails-Konsole eine falsche Beziehung erstellen müssen, müssen Sie lediglich einen neuen Mastery erstellen und dessen creator_id und skill_id entsprechend festlegen und dann speichern.