我正在尝试使用主动管理员创建用户。我正在跟踪从头开始的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会为你更改密码等。但是我收到了这个错误。
如何在此处使用有效管理员创建有效用户?
答案 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,因此它将通过。