2011-03-28 81 views
4

我搜索这个问题,在论坛上,并用在叉勺网站的解决方案,从规范选项中删除“--drb”,得到了它加载并运行,仍然会持续出现这个持续性错误。我也运行它没有spork。我已经阅读了一大堆rspec信息,并根据spork信息挖掘出的信息,但还没有。我也跑了检查错别字,缩进,编码......并且仍然处于亏损状态。其他问题,我已经能够解决,但这个人让我。这是下面如果任何人有一个建议:失败-section 7 - “未知属性:密码”

失败:

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

在0.836秒内完成 1个例子,1个故障 < - 从站(1)运行完成!

回答

8

是你,你已经加入了一些:密码,您的用户模型中的虚拟属性?这很容易错过,但你需要包括行

attr_accessor :password 
+0

非常感谢。我刚刚经历了一切,并找到了它。完全正确! – user652494 2011-03-28 17:51:28

+1

嘿格雷厄姆你能解释为什么attr_accessor:密码是必要的,当我们有attr_accessible:密码。这肯定的作品,但我就是不明白,为什么 – yoshyosh 2011-05-10 17:46:44

+2

attr_accessor中的模型上的虚拟属性,也是访问方法给它(获取和设置)设置密码。 attr_accessible稍微有点不同,因为该属性是否可以从模型外部访问。如果您查看模型中的其他属性,这些属性在其外部不可见(encrypted_pa​​ssword和salt属性就是这方面的很好例子),这意味着控制器无法对它们做任何事情,只有模型知道它们(和应该)。 – GrahamJRoy 2011-05-10 20:47:10

0

这是可能的,这已经有人问的时候(2011年)和现在变了,但我一开始遇到了同样的问题 - 我添加了所有的密码等测试,并且用户初始化本身出现“未知属性:密码”的情况。

在它的面前,GrahamJRoy的回答(更重要的是,拟订后续评论)解决我的困惑完美。

不过,我则不停地阅读本教程的下一节了解到,在用户模式下面一行意味着同样的事情:

has_secure_password 

一旦我说这个,我不再需要明确的attr_accessor声明:

attr_accessor :password, :password_confirmation 

我与这里的教程唯一的抱怨是,迈克尔不会警告您,您的所有用户引用的开始,如果你添加失败:密码:password_confirmation到User.new()的时候本教程首先向您展示了更新的构造函数。我期待着只有新的测试失败,我以为自己偏离了轨道,并在继续教程之前在其他地方(如此处)寻找解决方案。

0

确保在models/user.rb

我犯同样的错误,并忽视它改变attr_accessibleattr_accessor