无法使用ActiveAdmin创建新用户

时间:2011-11-14 19:08:46

标签: ruby-on-rails-3 devise activeadmin

我刚刚在我的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

4 个答案:

答案 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