我正在编写一个Rails应用程序来管理我们网站顶部的一系列横幅;每个人都应链接到编辑器提供的URL或从下拉列表中选择的特定产品。
我想在模型中进行某种验证,以便与其他检查保持一致,这样可以确保在保存时提供了一个(但不是两个)字段(产品ID或URL)。
是否有validates
类型的方式来检查这个,或者我是否必须将此检查放在控制器的某处?
答案 0 :(得分:18)
这是模型中非常直接的验证:
validate :check_consistency
def check_consistency
if product_id.blank? and url.blank?
#one at least must be filled in, add a custom error message
return false
elsif !product_id.blank? and !url.blank?
#both can't be filled in, add custom error message
return false
else
return true
end
end
答案 1 :(得分:6)
上面的类似答案,但这只是一个独家或if if语句不需要
validate :check_consistency
def check consistency
errors.add(:base, 'message') if product_id.blank? ^ url.blank?
end