我的名字有两列,
product_available_count( 整数 )和product_available_on( 日期 )。
我需要对这些列执行模型级验证。
验证应检查如果 product_required 为true,则应填充 字段。
当产品经理填写目录时,我们需要执行模型级别验证,以检查他是否应填写任一字段。
建议我为我的要求编写自定义验证的任何优雅方式。
我尝试过这种方法
validates :product_available_count_or_product_available_on if product_required?
def product_available_count_or_product_available_on
//logic ???
end
自定义验证是我的要求的唯一方法。我可以使用Proc或任何其他方法编写更好的代码。
答案 0 :(得分:1)
我认为自定义验证是解决此类问题的最佳方法
validate :product_available_count_or_product_available_on if product_required?
def product_available_count_or_product_available_on
if [product_available_count, product_available_on].compact.blank.size == 0
errors[:base] << ("Please select alteast one.")
end
end
但如果您真的不想编写自定义验证,请尝试使用
validates :product_available_count, :presence => { :if => product_required? && product_available_on.blank? }
validates :product_available_on, :presence => { :if => product_required? && product_available_count.blank? }