我对此感到非常沮丧,因为我必须做一些明显错误的事情 - 但我似乎无法弄清楚是什么!
基本上,我正在尝试为模型添加验证。当我在控制台中测试验证时,我设置的验证器似乎都没有工作!
以下是有问题的模型:
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 :(得分:0)
事实证明这里的错误就在我的脸上。
我在名为jobs的文件夹中有一个名为Sale.rb的附加文件。此文件重新打开Sale类,并添加了与Delayed_Job
模块相关的其他功能。由于未确定的原因,这阻止了模型验证工作或响应valid?
等方法。为了解决这个问题,我只是添加了我在这个单独文件中编写的方法,并将它们连接到model \ Sale.rb中。