我正在尝试修改我的活动管理员用户表单以修改用户的角色。角色是通过role_assignments表的多态关联。
当我提交表单时,角色没有更新,我猜是因为关联的属性受到保护而且我没有正确使用permit_params。
ActiveAdmin.register User do
permit_params :email, :newsletter_subscription, :password, :password_confirmation,
role_assignment_attributes: [:role_id, :user_id, :_destroy, :_create]
...
end
有什么想法吗?其他信息:
架构:
create_table "role_assignments", force: true do |t|
t.integer "role_id"
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
end
课程很简单:
class RoleAssignment < ActiveRecord::Base
belongs_to :user
belongs_to :role
end
class Role < ActiveRecord::Base
has_many :role_assignments
has_many :users, through: :role_assignments
belongs_to :user
end
这可以找到并给我一个很好的形式来修改角色。用户的主动管理表单:
form do |f|
f.inputs "Admin Details" do
f.input :email
f.input :newsletter_subscription, :as => :radio
f.input :roles, :as => :check_boxes
end
end
但是,当我提交表单时,没有分配任何内容。
答案 0 :(得分:1)
与docs illustrate一样,您需要将:id
作为:role_assignment_attributes
内的允许参数传递
permit_params :email, :newsletter_subscription, :password, :password_confirmation,
role_assignment_attributes: [:id, :role_id, :user_id, :_destroy]
请注意,我删除了:_create
param,因为我从未见过这样的内容,所以我假设它是无意中添加的。