Ruby on rails 模型验证不起作用

Ruby on rails 模型验证不起作用,ruby-on-rails,ruby-on-rails-3,model,ruby-on-rails-3.1,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, :presen

这件事让我非常沮丧,因为我肯定做了一些明显错误的事情——但我似乎不知道是什么

基本上,我正在尝试向模型添加验证。当我在控制台中测试验证时,我设置的验证程序似乎都不起作用

以下是有问题的模型:

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 
class Saletrue
验证:variant,:presence=>true
验证:price,:presence=>true
验证:start,:presence=>true
验证:end,:presence=>true
属于:商店
结束
以下是我的控制台输出:

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 
1.9.2-p290:008>s=Sale.new
=> # 
1.9.2-p290:009>s是否有效?
=>正确
1.9.2-p290:010>s.save
SQL(1.2ms)在“销售”中插入(“比较时间”、“创建时间”、“结束”、“价格”、“产品”、“店铺id”、“开始”、“更新时间”、“变体”)值(?,,,,,,,,,,)[[“比较时间”,无],“创建时间”,2012年1月27日星期五02:06:40 UTC+00:00],“结束”,无],“价格”,无],“产品”,无],“店铺id”,无],“开始”,无],“更新时间”,2012年1月27日星期五02:06:40 UTC+00:00],“变体”,无]]
=>正确
现在,如果我理解正确的话,
valid?
应该返回
false
,因为当模型定义它们不应该是空的时候,对象的一些属性是空的,但它不是


有什么想法吗?

原来这里的错误就在我面前


我有一个名为Sale.rb的附加文件,在一个名为jobs的文件夹中。此文件重新打开了Sale类,并添加了与
Delayed_作业
模块相关的附加功能。由于一个不确定的原因,这使得模型验证无法工作或响应像
valid?
这样的方法。为了解决这个问题,我简单地添加了在这个单独文件中编写的方法,并将它们连接到model\Sale.rb中。

您使用的rails版本是什么?另外,您可以添加商店模型源代码吗?我刚刚测试了一下,它工作正常。
class-Shop
--和3.1.3这是系统中仅有的两个模型?此外,您还没有添加rails版本。是的,除了Job为其目的而添加的任何模型之外,这是系统中仅有的两个模型。我正在使用Rails 3.1.3Try
reload或重新启动它。还有一个选项在添加验证后没有保存
sale.rb