Pomyślałem, że powinno być to proste rozwiązanie, zważywszy, że Rails 2.3 ma tę nowo sfałdowaną funkcję formularzy zagnieżdżonych. Zasadniczo chcę utworzyć lub zaktualizować użytkownika i przypisać mu role w tym samym czasie.Obiekt zagnieżdżony w/Checkboxes - przypisanie masy nawet z accepts_nested_attributes_for?
Wygląda na to, że wszystko robię dobrze, ale pojawia się błąd OSTRZEŻENIE: Nie można przypisać masowo tych chronionych atrybutów: roles_attrributes.
Próbowałem nawet zmienić widok na użytkownika [permissions_attrributes] [role_id], ponieważ pomyślałem, że może stół łączenia mylących Railsów.
W każdym razie, wszelkie sugestie, jak to powinno działać?
model
class User < ActiveRecord::Base
has_many :permissions
has_many :roles, :through => :permissions
accepts_nested_attributes_for :roles
accepts_nested_attributes_for :permissions
end
Fragment widoku (zawiadomienie próbowałem i nie udało się dostać fields_for wygenerować co chcę tutaj, może to jest mój problem?)
<% for role in Role.all %>
<%= check_box_tag("user[roles_attrributes][id]",role.id) %>
<%= role.rolename %>
<br/>
<% end %>
Params napotykając wydają się być po prawej:
{"user"=>{"password_confirmation"=>"[FILTERED]",
"roles_attrributes"=>{"id"=>"2"}, ...
Rozwiązanie Kombinacja moich błędów pisowni, nie używających attr_accessible, potrzebujących dostępu do atrybutów uprawnień i nieznacznie wyłączonych formularzy.
Model:
has_many :permissions, :dependent => :destroy
has_many :roles, :through => :permissions
accepts_nested_attributes_for :permissions
attr_accessible :permissions_attributes
Widok:
<% 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 %>
To było moje zrozumienie, że accepts_nested_attributes_for tego nie wymagało. Tak czy inaczej, próbowałem obu i nie działało. – Bill
Ten komunikat o błędzie jest zdecydowanie taki, który byłby spowodowany przez problem attr_protected lub attr_accessible. Również http://apidock.com/rails/ActiveRecord/NestedAttributes/ClassMethods/accepts_nested_attributes_for wskazuje, że jest to coś, o czym należy pamiętać nawet z ANAF. Być może warto się bliżej przyjrzeć? –