tl; dr驗證在瀏覽器中運行,但rspec失敗。我不知道爲什麼。導軌驗證中的自定義方法
回答:我試圖批量分配user_id,但user_id不是可以批量分配的。在控制器中正確構建它,在rspec中不正確。
這是我的上市模式。每個列表都有一個價格和與其相關的user_id。
在我的「上市」模式中,我有「價格」。
在我的「用戶」模型中,我有一個名爲「vip」的布爾屬性。
「價格」的最大值取決於用戶的VIP狀態。如果VIP,最高價格是400.否則,最高價格是200.
我寫了一個方法「listing_ceiling」,應根據用戶的VIP性能返回正確的最大值。
它可以在瀏覽器中,但是當我通過我的測試運行,RSpec的回來與錯誤:
undefined method `vip?' for nil:NilClass
我不完全知道在那裏我愛上短這裏。它在瀏覽器中正常工作,但在使用rspec進行測試時失敗。這裏的代碼:
validates_numericality_of :price, :presence => true, :greater_than => 10, :less_than => :listing_ceiling
def listing_ceiling
if self.user.vip?
400.01
else
200.01
end
end
任何想法,爲什麼它會這樣失敗?
當rspec運行時,它使用測試數據庫。你確定你有用戶嗎? – Kyle 2012-03-14 03:27:44