我想在我的模型中添加一个验证,其中有两个字段:
t.boolean :first
t.boolean :second
我希望确保
时first field is false
然后
second field is always false
这可能吗?
答案 0 :(得分:2)
validate :if_first_is_false_second_is_also
def if_first_is_false_second_is_also
if self.first_field == false && self.second_field != false
errors.add(:second_field, "your error message")
end
end
答案 1 :(得分:2)
你可以在Rails3中做这样的事情:
class MyValidator < ActiveModel::EachValidator
def validate_each(object, attribute, value)
unless {your condition here}
object.errors[attribute] << (options[:message] || "your error here")
end
end
end
编辑:忘记提及此示例来自Railscasts:http://railscasts.com/episodes/211-validations-in-rails-3,以防您需要有关此主题的更多详细信息
答案 2 :(得分:1)
我在此假设当first
为true
时,它始终没问题。
validate :check_booleans
def check_booleans
if first == false
errors[:base] << "wrong here" if second == true
end
end