【问题标题】:Rails: Multiple if conditions in validationRails:验证中的多个if条件
【发布时间】:2011-10-04 10:18:55
【问题描述】:

使用:Rails 3.0.3

我有这样的验证:

  validates_numericality_of :person_weight_kg, :greater_than => 0, :message => "value_must_be_number_over_zero", :if => :bmi_calculation?, :if => :is_metric?   

我想验证多个 if 条件(例如在示例中)。但是,Rails 似乎将这些语句视为 OR。一个返回false,一个返回true,这使得验证通过。

那么,我如何检查此验证是否满足两个 if 语句(bmi_calculation 和 is_metric)?

【问题讨论】:

  • 它也不将它们视为 OR。第二个 :if 覆盖第一个。

标签: ruby-on-rails ruby validation if-statement


【解决方案1】:

使用 lambda 作为if 条件:

validates_numericality_of :person_weight_kg, 
  if: -> record { record.bmi_calculation? && record.is_metric? }

【讨论】:

  • 它在 Rails 5 中不起作用。您有什么解决方案吗?
  • 可能是因为它应该在 lambda 块内声明参数if: -> { |record| record.bmi_calculation? && record.is_metric? }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 2015-05-14
  • 1970-01-01
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
相关资源
最近更新 更多