我的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.是否有人有他们可以发布或指向我的示例?
非常感谢!
答案 0 :(得分:1)
在编写代码时,不会评估作用域记录的highestLevel
属性。
您可以使用Proc
访问范围记录的值:
validates_numericality_of :highestLevel, greater_than: Proc.new { |r| r.highestLevel_was }