Rails 2.3にはこの新しくネストされたフォーム機能があるので、これには簡単な解決策があったはずだと思いました。基本的に私は、ユーザーを作成または更新し、同時にそれらの役割を割り当てる必要があります。チェックボックス付きのネストされたオブジェクト - accepts_nested_attributes_forの場合でもマス割り当て?
私はすべてのことを正しくやっているようですが、エラーが表示されます警告:これらの保護された属性を割り当てることはできません:roles_attrributes。
私は、ユーザーが[permissions_attrributes] [role_id]にビューを変更しようとしても、結合テーブルがRailsを混乱させる可能性があると考えていました。
とにかく、これが実際にどのように機能すべきかに関する提案はありますか?
はモデル
class User < ActiveRecord::Base
has_many :permissions
has_many :roles, :through => :permissions
accepts_nested_attributes_for :roles
accepts_nested_attributes_for :permissions
end
ビューからの抜粋(私が試したと私はここに欲しいものを生成するためにfields_forの取得に失敗しました気づく、多分それは私の問題だ?)
<% for role in Role.all %>
<%= check_box_tag("user[roles_attrributes][id]",role.id) %>
<%= role.rolename %>
<br/>
<% end %>
のparamsは全体来ているようです右:
{"user"=>{"password_confirmation"=>"[FILTERED]",
"roles_attrributes"=>{"id"=>"2"}, ...
ソリューション attr_accessibleを使用せず、permissions_attributesにアクセスする必要があり、フォームがややオフになっています。
モデル:
has_many :permissions, :dependent => :destroy
has_many :roles, :through => :permissions
accepts_nested_attributes_for :permissions
attr_accessible :permissions_attributes
ビュー:
<% 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 %>
accepts_nested_attributes_forはそれを必要としないと私は理解しました。とにかく、私は両方を試してみたが、いずれもうまくいった。 – Bill
このエラーメッセージは、attr_protectedまたはattr_accessibleの問題によって発生するエラーメッセージです。また、http://apidock.com/rails/ActiveRecord/NestedAttributes/ClassMethods/accepts_nested_attributes_forは、それがANAFでも認識していることを示しています。おそらくもっと見る価値がありますか? –