2017-04-24 60 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

謝謝。我多麼傻,忘記了! –