Je pensais qu'il aurait dû y avoir une solution simple, étant donné que Rails 2.3 a cette nouvelle fonctionnalité de formes imbriquées. Fondamentalement, je veux créer ou mettre à jour un utilisateur et leur assigner des rôles en même temps.Objet imbriqué w/Cases à cocher - assignation de masse même avec accept_nested_attributes_for?
Il semble que je fais tout correctement, mais je reçois l'erreur AVERTISSEMENT: Impossible d'attribuer en masse ces attributs protégés: roles_attrributes.
J'ai même essayé de changer la vue en user [permissions_attrributes] [role_id] parce que je pensais que peut-être la table de jointure déroutait Rails.
De toute façon, des suggestions sur comment cela devrait réellement fonctionner?
Modèle
class User < ActiveRecord::Base
has_many :permissions
has_many :roles, :through => :permissions
accepts_nested_attributes_for :roles
accepts_nested_attributes_for :permissions
end
Extrait de la vue (notez que j'ai essayé et échoué à obtenir fields_for pour générer ce que je veux ici, peut-être c'est mon problème?)
<% for role in Role.all %>
<%= check_box_tag("user[roles_attrributes][id]",role.id) %>
<%= role.rolename %>
<br/>
<% end %>
Params venir semblent partout être droite:
{"user"=>{"password_confirmation"=>"[FILTERED]",
"roles_attrributes"=>{"id"=>"2"}, ...
Solution Une combinaison de moi faute d'orthographe, n'utilisant pas attr_accessible, ayant besoin d'accéder à permissions_attributes, et le formulaire étant légèrement désactivé.
Modèle:
has_many :permissions, :dependent => :destroy
has_many :roles, :through => :permissions
accepts_nested_attributes_for :permissions
attr_accessible :permissions_attributes
Vue:
<% 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 %>
J'ai cru comprendre que accept_nested_attributes_for ne l'exigeait pas. De toute façon, j'ai essayé les deux et aucun n'a fonctionné. – Bill
Ce message d'erreur est certainement celui qui serait causé par un problème attr_protected ou attr_accessible. Aussi, http://apidock.com/rails/ActiveRecord/NestedAttributes/ClassMethods/accepts_nested_attributes_for indique que c'est quelque chose à connaître même avec ANAF. Peut-être vaut-il mieux regarder de plus près? –