2011-03-28 80 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