2

我正在尝试使用活动管理员创建用户。我正在从头开始进行身份验证 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 为您更改密码等。但我收到此错误。

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

4

1 回答 1

0

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

# models/user.rb

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

这样,password_digest 在验证之前就设置好了,所以它会通过。

于 2013-12-17T07:11:04.247 回答