【发布时间】:2014-01-15 10:57:39
【问题描述】:
我不明白为什么 permit_params 不能与自定义创建操作一起使用。
例如,让我们获取基本的 AdminUser 资源。
默认情况下一切正常。我们有:
ActiveAdmin.register AdminUser do
permit_params :email, :password, :password_confirmation
form do |f|
f.inputs "Admin Details" do
f.input :email
f.input :password
f.input :password_confirmation
end
f.actions
end
end
但是,由于某些原因,我们添加自定义创建后 permit_params 将不再起作用。
ActiveAdmin.register AdminUser do
permit_params :email, :password, :password_confirmation
form do |f|
f.inputs "Admin Details" do
f.input :email
f.input :password
f.input :password_confirmation
end
f.actions
end
controller do
def create
AdminUser.create(params[:admin_user])
do_some_magic_stuff_here
redirect_to backend_admin_users_path, notice: 'Custom create'
end
end
end
在“AdminUser.create(params[:admin_user])”行中出现错误“ActiveModel::ForbiddenAttributesError”
尝试了许多可能的解决方案,只有一个对我有用,但我真的不喜欢这样:
def create
AdminUser.create(params[:admin_user].permit(:email, :password, :password_confirmation))
do_some_magic_stuff_here
redirect_to admin_admin_users_path, notice: 'Custom create'
end
我不明白为什么我不能按照它应该工作的默认方式工作:
def admin_user_params
params.require(:admin_user).permit(:email, :password, :password_confirmation)
end
谁能解释一下这里发生了什么?有什么好方法可以让自定义操作与 permit_params 一起使用?
【问题讨论】:
标签: ruby-on-rails-4 activeadmin strong-parameters