Rails 4验证:更新时更多_than:less_than

时间:2014-09-04 17:04:55

标签: ruby-on-rails ruby validation ruby-on-rails-4 model

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

我对validates和validates_numericality_of进行了一些研究,看来我可以分别使用:greater_than或:less_than来满足我的需求。

在我的播放器模型中,我试过这个:

class Player < ActiveRecord::Base
  validates_numericality_of :highestLevel, greater_than: self.highestLevel
end

但是,无论是否更新或更低更新都会执行更高级别值的更新:

Player.update(8, highestLevel: 12)

我期待得到的是没有更新,因为我的玩家ID 8的值具有最高级别15.是否有人有他们可以发布或指向我的示例?

非常感谢!

1 个答案:

答案 0 :(得分:1)

在编写代码时,不会评估作用域记录的highestLevel属性。

您可以使用Proc访问范围记录的值:

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