2017-04-24 42 views
1

在我的模型我有before_validation上创建工作不

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 

在我的rails控制台我想创建一个新的测试

Test.create!(user_id: 9, runnable: true) 

但我得到错误

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

我在做什么错了?我在使用ruby 2.1.8和rails 4.0.13。由于

+0

,测试是一个类名一个可怕的选择。你会遇到麻烦。 –

回答

5

我个人的偏好是设置变量的时候是非常明确的,实际上你顺便说一句缺少self

def set_pending self.status = 'pending' end

+0

谢谢。我多么傻,忘记了! –