Ich habe die folgenden Klassen:Können verschachtelte Attribute in Kombination mit Vererbung verwendet werden?
- Projekt
- Person
- Person>Entwickler
- Person>-Manager
Im Project
Modell habe ich die folgenden Anweisungen hinzugefügt:
has_and_belongs_to_many :people
accepts_nested_attributes_for :people
Und natürlich die entsprechenden Aussagen in der Klasse Person
. Wie kann ich eine Developer
zu einer Project
über die Methode hinzufügen? Die folgende funktioniert nicht:
@p.people_attributes = [{:name => "Epic Beard Man", :type => "Developer"}]
@p.people
=> [#<Person id: nil, name: "Epic Beard Man", type: nil>]
Wie Sie die type
Attribute sehen können, ist auf nil
statt "Developer"
.
Hinweis: Dies funktioniert für Rails 2.3, siehe meine Antwort unten für Rails 3 – tokland
@tokland, ich hatte diese Frage für einige Zeit nicht besucht. Ich habe meine Antwort mit einer Rails 3-Lösung aktualisiert. –
großartig. Ich würde ein einfaches 'def self.atattributes_protected_by_default' schreiben, aber was auch immer. – tokland