Ich dachte, dass es eine einfache Lösung dafür geben sollte, da Rails 2.3 diese neumodischen verschachtelten Formulare hat. Grundsätzlich möchte ich einen Benutzer erstellen oder aktualisieren und ihnen gleichzeitig Rollen zuweisen.Verschachteltes Objekt mit Checkboxen - Massenzuweisung auch mit accresents_nested_attributes_for?
Es scheint, als ob ich alles richtig mache, aber ich bekomme den Fehler Warnung: Diese geschützten Attribute können nicht massenweise zugeordnet werden: roles_attrributes.
Ich habe sogar versucht, die Ansicht zu Benutzer [Berechtigungen_attributes] [Role_id] ändern, weil ich dachte, dass die Join-Tabelle Rails möglicherweise verwirrend war.
Wie auch immer, irgendwelche Vorschläge, wie das eigentlich funktionieren sollte?
Modell
class User < ActiveRecord::Base
has_many :permissions
has_many :roles, :through => :permissions
accepts_nested_attributes_for :roles
accepts_nested_attributes_for :permissions
end
Auszug aus Sicht (merke ich versucht und sind gescheitert fields_for kennen zu erzeugen, was ich hier will, vielleicht ist das mein Problem?)
<% for role in Role.all %>
<%= check_box_tag("user[roles_attrributes][id]",role.id) %>
<%= role.rolename %>
<br/>
<% end %>
Params über scheinen kommen zu sein rechts:
{"user"=>{"password_confirmation"=>"[FILTERED]",
"roles_attrributes"=>{"id"=>"2"}, ...
Lösung Eine Kombination von mir falsch geschrieben, nicht mit attr_accessible, müssen Zugriff auf Berechtigungen_Attribute, und das Formular ist leicht aus.
Modell:
has_many :permissions, :dependent => :destroy
has_many :roles, :through => :permissions
accepts_nested_attributes_for :permissions
attr_accessible :permissions_attributes
Ausblick:
<% Role.all(:order => "rolename ASC").each_with_index do |role,idx| %>
<%= check_box_tag("user[permissions_attributes][#{idx}][role_id]",role.id) %>
<%= role.rolename %>
<br/>
<% end %>
Es war mein Verständnis, dass access_nested_attributes_for das nicht benötigt. Wie auch immer, ich habe beides versucht und auch nicht gearbeitet. – Bill
Diese Fehlermeldung wird definitiv von einem attr_protected oder attr_accessible Problem verursacht. Auch http://apidock.com/rails/ActiveRecord/NestedAttributes/ClassMethods/accepts_nested_attributes_for weist darauf hin, dass auch bei ANAF etwas zu beachten ist. Vielleicht einen genaueren Blick wert? –