基于轨道中其他字段的验证?



使用关注

我有 2 个字段周期和年龄

period can be (0,1,2)
enum period: %w(evergreen,long_term,short_term)
age can be (0,1)
enum age: %w(long_term, evergreen)

如果年龄long_term那么没有可以从经期中选择常青树,存在并不总是真的

如何使用自定义消息在轨道中添加此类验证 "如果年龄long_term,你不能选择常青树" 我正在尝试

validates :period, if: :selection_rule?
def selection_rule
return if age == long_term && period != evergreen 
end

进行这种验证的正确方法应该是什么?

您可以在 rails 模型中添加自定义验证错误消息。

validate :age_period
def age_period
errors.add(:period, "can't be selected for this age group") if age == long_term && period != evergreen 
end

对于问题,您可以尝试以下操作:

included do
validate :age_period
end
private
def age_period
errors.add(:period, "can't be selected if age is long_term") if age == long_term && period == evergreen
end

最新更新