2

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

这是我到目前为止所拥有的:

  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

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

4

1 回答 1

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

于 2015-05-07T02:06:07.180 回答