我刚刚在我的rails应用程序中添加了活动管理员,但我无法创建新用户。我正在使用活动管理员创建的用户模型以及一些添加的列,如名字和姓氏。当我为新用户填写表单并单击“创建新用户”时,该页面将刷新但不保存我的用户,并且不会使用成功的消息进入回顾页面。
这是我的AdminUser模型
class AdminUser < ActiveRecord::Base
devise :database_authenticatable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me, :first_name, :last_name
end
这是我的主动管理类
ActiveAdmin.register AdminUser do
index do
column :first_name
column :last_name
column :email
default_actions
end
form do |f|
f.inputs "User Details" do
f.inputs :email
f.inputs :first_name
f.inputs :last_name
end
f.buttons
end
end
答案 0 :(得分:8)
我的解决方案:
ActiveAdmin.register User do
permit_params [:email, :password, :password_confirmation]
form do |f|
f.inputs "User" do
f.input :email
f.input :password
f.input :password_confirmation
end
f.actions
end
end
答案 1 :(得分:3)
忘了把这个小家伙添加到模特...... fml
after_create { |admin| admin.send_reset_password_instructions }
def password_required?
new_record? ? false : super
end
答案 2 :(得分:2)
这与Rails中的代码重新加载错误有关,当您的环境指定config.cache_classes = false
时会显示该错误。
在config/environments/development.rb
中将其更改为true,重新启动服务器,您应该可以创建用户。
然而,这并不理想,一个解决方法suggested here就是将以下内容放入config/environments/development.rb
:
config.to_prepare do
Thread.current.keys.each{ |k| Thread.current[k] = nil if k.to_s =~ /_scoped_methods$/ }
end
虽然该错误似乎已得到解决,但我在3.1.1中看到了上述代码修复的问题。
即使这是Rails中的一个错误,如果你想看到更多关于此的讨论,它也会被记录为bug in active_admin。
答案 3 :(得分:0)
Upvoting @ Danpe的回答。 “密码”是必填字段。所以你需要将它添加到permit_params并在表单中要求输入密码。只有这样才能正确保存表格。这是我的permit params字符串,它还修复了创建此处提到的ActiveAdmin用户的其他问题:https://github.com/gregbell/active_admin/issues/2595
controller do
def permitted_params
params.permit :utf8, :_method, :authenticity_token, :commit, :id,
model: [:attribute1, :attribute2, etc]
end
end