Rails:自定义模型验证

时间:2013-06-01 00:09:21

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

您好我正在尝试为模型编写自定义验证,如果验证失败,则不允许保存模型。

这是我到目前为止所做的:

  validate :valid_est_time

  private

  def valid_est_time
    if !self.est_time.is_a? Integer || self.est_time >= 0
      self.errors.add("Invalid Response Estimated Time.")
    end 
  end

验证通过不保存模型来工作,但它也会抛出错误(我不希望它做)

NoMethodError in Jobs#index

Showing /Users/squitorio/Documents/Project/Dispatcher/assist/app/views/jobs/_index_active.html.erb where line #19 raised:

undefined method `minutes' for nil:NilClass

我只是希望它不保存模型,然后继续

1 个答案:

答案 0 :(得分:0)

您可以使用before_save回调。如果从名为before_save的任何方法返回false,则取消所有后续回调。这将阻止您的模型保存。看看这个http://guides.rubyonrails.org/active_record_callbacks.html

如果您仍想使用Rails验证的其他功能,请在此处查看自定义验证http://guides.rubyonrails.org/active_record_validations.html#performing-custom-validations