Ich bin gerade mit Rails 3.2 auf dem Laufenden, und wenn ich create oder update_attributes benutze, scheint ich immer Massenzuordnungsfehler zu bekommen. Ist das normal? Wie sollte ich Datensätze erstellen und aktualisieren?Kann jemand eine strenge Massenzuweisung in Rails 3.2 erklären?
Antwort
fügen Sie die Attribute, die Sie über massassignment zur weißen Liste im Modell verwandten verschachtelten Modell-Attribute durch die gleiche Form attr_accessible :my_attribute
ermöglicht einstellen festlegen möchten, haben Sie eine accepts_nested_attributes_for
für dieses Modell zu setzen und die Attribute hinzufügen auf die Whitelist attr_accessible :$RELATED_MODEL_attributes
lesen Sie diese Links. http://api.rubyonrails.org/classes/ActiveModel/MassAssignmentSecurity/ClassMethods.html
http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html
Ok, ich verstehe. Daher ist die Massenzuweisung standardmäßig eingeschränkt, und das ist normales Verhalten? – Nathan
Nein, wenn Sie 'attr_accessible' oder' attr_protected' nicht festlegen, sind alle Attribute zugänglich und können massassigniert werden. Die Standardeinstellung ist also alles offen ... Wenn Sie eine davon festlegen, erstellen Sie eine weiße/schwarze Liste, dann ... wenn Sie verschachtelte Attribute zuordnen möchten. Sie müssen sie zur Whitelist hinzufügen, sonst erhalten Sie den Massenassignierungsfehler, den Sie sehen. also musst du in diesem Fall 'attr_accessible' setzen ... – mober
Scheint dir der oben erwähnte Michael Hartle-Beitrag etwas widersprechen zu lassen, zumindest in 3.2.3 ist die Massenzuweisung eingeschränkt, es sei denn, du legst mit attr_accessible auf. – Nathan
verwenden Sie verschachtelte Ressourcen? – RadBrad
Meinst du, ich bin Attribute zuweisen durch Assoziationen (d. H. Blongs_to), dann ja. Ansonsten bin ich mir nicht sicher, was du meinst, sorry. – Nathan
Michael Hartl hat zu diesem Thema geschrieben: http://news.ycombinator.com/item?id=3781233 – m33lky