before_validation on create not working

Ton*_*ent 2 activerecord ruby-on-rails

在我的模型中,我有

class Test < ActiveRecord::Base
  before_validation :set_pending, on: :create
  validates :status, presence: true, inclusion: { in: %w(passed failed pending) }
  .
  .
  .
  private

  def set_pending
    status = 'pending'
  end
end
Run Code Online (Sandbox Code Playgroud)

在我的rails控制台中,我正在尝试创建一个新的测试

Test.create!(user_id: 9, runnable: true) 
Run Code Online (Sandbox Code Playgroud)

但我收到了错误

ActiveRecord::RecordInvalid: Validation failed: Status can't be blank

我究竟做错了什么?我在ruby 2.1.8和rails 4.0.13上.谢谢

Tho*_*oll 7

我个人的偏好是在设置变量时非常明确,实际上你错过了一个 self

def set_pending self.status = 'pending' end