Rails回调before_validation不起作用

时间:2014-07-21 20:09:43

标签: ruby-on-rails callback

我从rails指南中获取了此代码,我认为此代码无法正常工作,因为title为空白而不应具有body的值,但它不会以这种方式工作,而是显示错误& #34;标题不能为空白"。道歉是否过于简单。

class Article < ActiveRecord::Base
  validates :title, :body, presence: true

  before_validation :ensure_title_has_a_value

  protected
  def ensure_title_has_a_value
    if title.nil?
        self.title = body unless body.blank?
    end
  end
end

1 个答案:

答案 0 :(得分:1)

我想你的标题属性实际上不是nil,特别是如果它来自表单。它可能只是一个空字符串。

尝试将验证更改为:

def ensure_title_has_a_value
  if title.blank?
    self.title = body unless body.blank?
  end
end