【问题标题】:Rails: Custom Model ValidationRails:自定义模型验证
【发布时间】:2013-06-01 00:09:21
【问题描述】:

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

这是我目前所拥有的:

  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

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

【问题讨论】:

  • 你的_index_active.html.erb是什么样的?
  • 看起来你的部分正在调用 .minutes 的东西,这应该是一个时间,但实际上是 nil - 可能是这个模型的 est_time 属性?

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


【解决方案1】:

您可以使用 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    相关资源
    最近更新 更多