我正在按照本教程进行操作,并且在某一时刻,它告诉我
... 将密码和密码确认属性添加到用户模型 [...] 与我们目前看到的其他属性不同,密码属性将是虚拟的——它们只会临时存在于内存中,不会持久化到数据库。
和
正如我们将在 6.3.4 节中看到的,这些虚拟属性由 has_secure_password 自动实现。
我的模型如下所示:
class User < ActiveRecord::Base
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
has_secure_password
attr_accessible :email, :is_admin, :name, :password, :password_confirmation
validates :name, presence: true, uniqueness: true
validates :password_digest, presence: true
validates :password, presence: true, length: { minimum: 6 }
validates :password_confirmation, presence: true
validates :email, presence: true, format: {with: VALID_EMAIL_REGEX}, uniqueness: true
end
所以现在当我尝试创建一个新用户时;
User.create(name: "Foo Bar", email: "foo@bar.net", password: "foobar", password_confirmation: "foobar")
我收到以下错误:
ActiveModel::MassAssignmentSecurity::Error: Can't mass-assign protected attributes: password, password_confirmation
为什么?!