数据库模型验证

时间:2011-07-22 15:33:00

标签: ruby-on-rails ruby-on-rails-3

我想在我的模型中添加一个验证,其中有两个字段:

t.boolean :first
t.boolean :second

我希望确保

first field is false

然后

second field is always false

这可能吗?

3 个答案:

答案 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

More on validations

答案 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)

我在此假设当firsttrue时,它始终没问题。

validate :check_booleans

def check_booleans
  if first == false
     errors[:base] << "wrong here" if second == true
  end
end