Ruby on rails 如果num1>;num2>;num3

Ruby on rails 如果num1>;num2>;num3,ruby-on-rails,validation,numbers,Ruby On Rails,Validation,Numbers,我目前在Rails4上使用自定义验证时面临两个问题。第一个问题,我如何使下面的代码更加通用和高效(如果可能的话) 它真的又肿又脏,不是吗 第二个问题,关于错误。添加,我可以传递一个符号和一条错误消息。但是,如果我不传递任何消息,我如何为我的地区定义自定义yml键?例如: en: activerecord: errors: models: prices: attributes: custom_key_message

我目前在Rails4上使用自定义验证时面临两个问题。第一个问题,我如何使下面的代码更加通用和高效(如果可能的话)

它真的又肿又脏,不是吗

第二个问题,关于
错误。添加
,我可以传递一个符号和一条错误消息。但是,如果我不传递任何消息,我如何为我的地区定义自定义yml键?例如:

en:
  activerecord:
    errors:
      models:
        prices:
          attributes:
            custom_key_message_here: 'p1 must be greater than everything'
我想在区域设置和模型之间保持这种关注的分离。但是,如果我没有传递任何消息,则表明show me
无效。我想再解释一下

感谢您的帮助。

快速查看,您是否可以使用:

validates :p1, presence: true, numericality: { greater_than: :p2 }
validates :p2, presence: true, numericality: { greater_than: :p3 }
validates :p3, presence: true

只要
p1>p2
p2>p3
,就不需要直接比较
p1
p3
。这是假设所有三个值都必须存在,但如果它们是可选的,您可能会调整它们以使其正常工作。

完美。在论坛上,我发现这是不可能的,因为
大于
只接受整数,所以我甚至没有亲自使用属性来尝试。工作起来很有魅力。谢谢
validates :p1, presence: true, numericality: { greater_than: :p2 }
validates :p2, presence: true, numericality: { greater_than: :p3 }
validates :p3, presence: true