Ruby on rails Rails 4验证:更新时大于:小于

Ruby on rails Rails 4验证:更新时大于:小于,ruby-on-rails,ruby,validation,ruby-on-rails-4,model,Ruby On Rails,Ruby,Validation,Ruby On Rails 4,Model,我在rails应用程序中有一个播放器模型和表。有一个最高等级(int)字段,存储玩家达到的最高等级。由于每个玩家有多个配置文件,因此在某些情况下,报告的级别可能低于数据库中的最高级别 我做了一些关于验证和验证的研究,似乎我可以根据我的需要分别使用:大于或:小于 在我的播放器模型中,我尝试了以下方法: class Player < ActiveRecord::Base validates_numericality_of :highestLevel, greater_than: self.

我在rails应用程序中有一个播放器模型和表。有一个最高等级(int)字段,存储玩家达到的最高等级。由于每个玩家有多个配置文件,因此在某些情况下,报告的级别可能低于数据库中的最高级别

我做了一些关于验证和验证的研究,似乎我可以根据我的需要分别使用:大于或:小于

在我的播放器模型中,我尝试了以下方法:

class Player < ActiveRecord::Base
  validates_numericality_of :highestLevel, greater_than: self.highestLevel
end
我期望得到的是没有更新,因为我的玩家ID 8的值最高为15。有没有人可以给我举个例子


非常感谢

在编写代码时,不会对作用域记录的
highestLevel
属性求值

您可以使用
Proc
访问作用域记录的值:

validates_numericality_of :highestLevel, greater_than: Proc.new { |r| r.highestLevel_was }

我给了你的例子一个旋转,但是我得到了和以前一样的东西-最高级别的值更新,不管它是大于还是小于存储的值。我正在用Ruby 2.1运行rails 4.1.4。根据文档,这应该没有什么区别。看看更新的答案,使用
highestLevel\u was
我也做了一次尝试,但结果相同
validates_numericality_of :highestLevel, greater_than: Proc.new { |r| r.highestLevel_was }