在Active Admin中创建用户

时间:2013-12-16 16:11:23

标签: ruby-on-rails activeadmin authentication bcrypt-ruby

我正在尝试使用主动管理员创建用户。我正在跟踪从头开始的railscast来执行此操作。目前,我已使用以下命令设置资源:

rails g resource user name:string username:string password_digest:string

然后我的用户模型如下所示:

class User < ActiveRecord::Base
  has_secure_password
  attr_accessible :name, :password, :username

  validates_uniqueness_of :name
  validates_uniqueness_of :username
end

大部分时间跟随railscast一字不差。然后我添加了一个活动的管理资源,其中包含以下代码:

rails g active_admin:resource user

我的用户主动管理模型如下所示:

ActiveAdmin.register User do
  index do
    # column "number", :id
    column :name
    column :username
    column :password
    default_actions
  end

  show do
    attributes_table do
      row :name
      row :username
      row :password
    end
  end
end

当我去创建用户时,我收到以下错误消息:

Can't mass-assign protected attributes: password_digest

我知道has_secure_password和bcrypt-ruby会为你更改密码等。但是我收到了这个错误。

如何在此处使用有效管理员创建有效用户?

1 个答案:

答案 0 :(得分:0)

我不确定您所指的railscast的详细信息,但存储密码的常用方法是存储加密的摘要而不是实际的密码,以便访问您的数据库的人不具备实际的密码您的用户的密码。密码实际上没有保存。这是一种可行的方法:

# models/user.rb

def password= new_password
  self.password_digest = ::BCrypt::Password.create(new_password,cost:10).to_s
end

这样,在验证之前设置了password_digest,因此它将通过。