小编Ale*_*Vit的帖子

Permit_params 不适用于自定义创建操作

我不明白为什么 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
Run Code Online (Sandbox Code Playgroud)

但是,一旦我们添加自定义创建,由于某些原因,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
Run Code Online (Sandbox Code Playgroud)

我在“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, …
Run Code Online (Sandbox Code Playgroud)

activeadmin strong-parameters ruby-on-rails-4

1
推荐指数
1
解决办法
3056
查看次数