2012-01-27 88 views
0

我非常沮喪的這一個,因爲我必須做一些明顯錯誤的 - 但我似乎無法弄清楚什麼!模型驗證不起作用

基本上,我試圖添加驗證模型。當我在控制檯中測試驗證時,我所設置的驗證器都沒有工作!

這裏是有問題的模式:

class Sale < ActiveRecord::Base 
    validates :product, :presence => true 
    validates :variant, :presence => true 
    validates :price, :presence => true 
    validates :start, :presence => true 
    validates :end, :presence => true 

    belongs_to :shop 
end 

這裏是我的控制檯輸出:

1.9.2-p290 :008 > s = Sale.new 
=> #<Sale id: nil, product: nil, variant: nil, start: nil, end: nil, price: nil, shop_id: nil, created_at: nil, updated_at: nil, compare_at: nil> 
1.9.2-p290 :009 > s.valid? 
=> true 
1.9.2-p290 :010 > s.save 
    SQL (1.2ms) INSERT INTO "sales" ("compare_at", "created_at", "end", "price", "product", "shop_id", "start", "updated_at", "variant") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) [["compare_at", nil], ["created_at", Fri, 27 Jan 2012 02:06:40 UTC +00:00], ["end", nil], ["price", nil], ["product", nil], ["shop_id", nil], ["start", nil], ["updated_at", Fri, 27 Jan 2012 02:06:40 UTC +00:00], ["variant", nil]] 
=> true 

現在,如果我理解this article正確,valid?應該返回false因爲幾個對象的屬性都是零,當模型定義他們不應該 - 但它不是!

任何想法?

+0

什麼是您使用的rails版本?另外,你可以添加商店模型源代碼嗎?我只是測試了一下,它按預期工作。 – 2012-01-27 02:39:07

+0

'class Shop 2012-01-27 02:41:22

+0

這些是系統中唯一的兩種型號?另外,你還沒有添加rails版本。 – 2012-01-27 02:44:15

回答

0

事實證明,這裏的錯誤是在我的臉上。

我有一個名爲Sale.rb的文件,名爲jobs。該文件重新打開了Sale類,並添加了與Delayed_Job模塊相關的附加功能。由於不確定的原因,這妨礙了模型驗證的正常工作或對valid?等方法的響應。爲了解決這個問題,我簡單地添加了我在這個單獨的文件中編寫的方法,並將它們連接到model \ Sale.rb中。