模型验证不起作用

时间:2012-01-27 02:08:36

标签: ruby-on-rails ruby-on-rails-3 model ruby-on-rails-3.1

我对此感到非常沮丧,因为我必须做一些明显错误的事情 - 但我似乎无法弄清楚是什么!

基本上,我正在尝试为模型添加验证。当我在控制台中测试验证时,我设置的验证器似乎都没有工作!

以下是有问题的模型:

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 articlevalid?应该返回false因为几个对象的属性为零,当模型定义它们不应该是 - 但它不是!

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

事实证明这里的错误就在我的脸上。

我在名为jobs的文件夹中有一个名为Sale.rb的附加文件。此文件重新打开Sale类,并添加了与Delayed_Job模块相关的其他功能。由于未确定的原因,这阻止了模型验证工作或响应valid?等方法。为了解决这个问题,我只是添加了我在这个单独文件中编写的方法,并将它们连接到model \ Sale.rb中。