Rails Tutorial(Hartl)第7节失败 - “未知属性:密码”

时间:2011-03-28 17:14:13

标签: ruby-on-rails-3

我在论坛上搜索了这个问题,并在spork网站上使用了一个解决方案,从规范选项中删除“--drb”,让它加载并运行,但这个持久性错误仍然不断弹出。我也没有spork运行它。我已经提前读了一堆rspec信息,并且通过spork信息进行了挖掘,但还没有。我还检查了拼写错误,缩进,编码等问题,但我仍处于亏损状态。其他问题,我已经能够解决,但这一个让我。如果有人提出建议,请在下面填写:

故障:

1)用户密码加密has_password?如果密码不匹配,则方法应为false      失败/错误:@ user = User.create!(@ attr)      ActiveRecord的:: UnknownAttributeError:        未知属性:密码      #./spec/models/user_spec.rb:94:in'块(3级)in'

以0.836秒完成 1例,1次失败   < - Slave(1)运行完毕!

3 个答案:

答案 0 :(得分:8)

您确定已添加:密码作为用户模型的虚拟属性吗?这很容易错过,但您需要包含该行

attr_accessor :password

答案 1 :(得分:0)

这可能在问题被提出的时间(2011年)和现在之间发生了变化,但我最初遇到了同样的问题 - 我添加了所有密码等测试,而用户初始化本身就是用“未知属性:密码”全面失败。

从表面上看,GrahamJRoy的答案(更重要的是,随后的阐述评论)完美地解决了我的困惑。

然而,我继续阅读本教程的下一部分,并了解到User模型中的以下行意味着同样的事情:

has_secure_password

一旦我添加了这个,我就不再需要显式的attr_accessor声明了:

attr_accessor :password, :password_confirmation

我对此教程的唯一抱怨是Michael没有警告您,如果您在教程首次向您显示时将:password和:password_confirmation添加到User.new(),则所有用户引用都将开始失败更新的构造函数。我期待只有新测试失败,认为我偏离轨道,并在继续教程之前在其他地方(例如这里)搜索解决方案。

答案 2 :(得分:0)

务必在attr_accessible

中将attr_accessor更改为models/user.rb

我犯了同样的错误而忽略了它。