RSpec 测试失败,出现"未知属性"



我正在测试我的模型中的属性响应:

it { should respond_to(:password) }
it { should respond_to(:password_confirmation) }

这些属性不是数据库的一部分,只是在我的模型中声明为attr_accessible。当我不申报它们并运行测试时,我会得到:

ActiveModel::MassAssignmentSecurity::Error:
  Can't mass-assign protected attributes: password, password_confirmation

但在我申报后,我得到了:

ActiveRecord::UnknownAttributeError:
  unknown attribute: password

知道为什么会发生这种事吗?

@8vius,因为您正在学习教程,但还不够深入。您需要添加以下行:

has_secure_password

下面attr_accessible:电子邮件、:名称、:角色、:密码、:密码确认

这允许您将纯文本密码和passwordconfirmation保存到内存中,以便在加密并保存到DB之前比较字符串并强制相等。您不希望在数据库中以纯文本形式保存密码。

attr_accessible告诉Rails您允许对属性进行所谓的批量分配。

但是属性必须存在于数据库中,或者您应该创建getter/setter,最简单的方法是:

attr_accessor :password_confirmation, :password

不管怎样,你不存储密码听起来很奇怪。

相关内容

  • 没有找到相关文章

最新更新