【问题标题】:Rails Dynamic Model Validations via ActiveSupport::Concern or Custom Validation通过 ActiveSupport::Concern 或自定义验证进行 Rails 动态模型验证
【发布时间】:2017-01-25 02:17:34
【问题描述】:

所以...

我目前正在从事一个 Rails 项目,该项目将创建几个具有相似费用属性的模型。我想做的是创建一个可重用的验证机制。例如,我的模型可能是..

Foo
  currency
  producer_product_fee
  producer_transport_fee
  consumer_product_fee
  consumer_transport_fee

...我将有几个结构相似的模型(每个费用总是有两个不同的方面),我想验证费用是非负数、有效数字,并且生产者费用始终是低于相应的消费费用。请注意,跨模型的不同属性可能命名完全不同,但可以假设生产者/消费者费用对总是命名相同,除了前缀。关于如何实现这一点的任何提示都会很棒。

【问题讨论】:

    标签: ruby-on-rails activerecord activesupport activesupport-concern


    【解决方案1】:

    大概是这样的吧?

    validates_numericality_of :producer_product_fee, 
        less_than: Proc.new { |r| r.consumer_product_fee }, 
        greater_than_or_equal_to: 0,
        allow_blank: false
    

    【讨论】:

    • 这可能有效,但这需要在每个模型中实现。理想情况下,我将能够创建一个模块或类似的东西,以便我可以导入它并可能调用某些东西,将我的参数作为符号或类似的东西传递,而不必再次指定这个逻辑。希望为这个可重用组件制定一个规范,其中包含一个 shared_context 和 shared_examples,我可以从我的其他模型测试中调用它们来简化所有组件的验证。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 2013-04-12
    相关资源
    最近更新 更多