pensé que debería haber sido una solución simple a este, ya que los carriles 2.3 cuenta con función de estas formas novedosas anidados. Básicamente, quiero crear o actualizar un usuario y asignarles roles al mismo tiempo.Objeto anidado con casillas de verificación: asignación de masa incluso con accept_nested_attributes_for?
Parece que estoy haciendo todo bien pero recibo el error ADVERTENCIA: No se pueden asignar en masa estos atributos protegidos: roles_attrributes.
Incluso he intentado cambiar la vista al usuario [permissions_attrributes] [ROLE_ID] porque pensé que tal vez la tabla de unión era confuso rieles.
De todas formas, alguna sugerencia sobre cómo debería funcionar esto en realidad?
Modelo
class User < ActiveRecord::Base
has_many :permissions
has_many :roles, :through => :permissions
accepts_nested_attributes_for :roles
accepts_nested_attributes_for :permissions
end
Extracto de vista (nótese que intentó sin éxito obtener fields_for para generar lo que quiero aquí, tal vez ese es mi problema?)
<% for role in Role.all %>
<%= check_box_tag("user[roles_attrributes][id]",role.id) %>
<%= role.rolename %>
<br/>
<% end %>
Parámetros toparse parecen estar derecha:
{"user"=>{"password_confirmation"=>"[FILTERED]",
"roles_attrributes"=>{"id"=>"2"}, ...
Solución Una combinación de errores ortográficos, no usar attr_accessible, tener que acceder a los atributos_de_permisiones y estar un poco apagado.
Modelo:
has_many :permissions, :dependent => :destroy
has_many :roles, :through => :permissions
accepts_nested_attributes_for :permissions
attr_accessible :permissions_attributes
Vista:
<% 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 %>
Tenía entendido que accept_nested_attributes_for no lo requería. De todos modos, lo intenté y ninguno de los dos funcionó. – Bill
Ese mensaje de error es definitivamente uno que podría ser causado por un problema attr_protected o attr_accessible. También http://apidock.com/rails/ActiveRecord/NestedAttributes/ClassMethods/accepts_nested_attributes_for indica que es algo a tener en cuenta incluso con ANAF. Posiblemente vale la pena mirar más de cerca? –