是否基于Rails的其他字段进行验证?

时间:2020-02-11 16:22:54

标签: ruby-on-rails ruby-on-rails-4

使用了关注

我有两个领域的年龄和年龄

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)

如果年龄是长期的,那么就无法从时期中选择常青树,存在并不总是如此

如何在带有自定义消息的Rails中添加此类验证 “如果年龄长,则不能选择常绿” 我正在尝试

validates :period, if: :selection_rule?

def selection_rule
return if age == long_term && period != evergreen 
end

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

2 个答案:

答案 0 :(得分:0)

您可以在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

答案 1 :(得分:0)

出于关注,您可以尝试以下操作:

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