2015-01-22 2 views
0

lookups 다형 테이블 ContractType 모델이 있습니다. 을 설정하는 ContractType 모델의 before_save 콜백이 있는데 작동하지 않는 것 같습니다. 레일 4 : before_save 콜백이 작동하지 않습니다.

class Lookup < ActiveRecord::Base 
    validates :value, presence: true 
    validates :category, presence: true 
end 

class ContractType < Lookup 
    before_save { self.category = "contract_type" } 
end 

는 다음 나는 rails c 엽니 다

> c = ContractType.create(value: "test") 
> c.errors.messages 
=> { :category => ["can't be blank"] } 

내가 오류, 단지 실패 검증을하지 않습니다. 지금까지 내가 아는 한 구문은 정확합니다. 단지 before_save 콜백이 작동하지 않는 것 같습니다 ...

내가 여기에 뭔가 분명한 것을 놓치고 있습니까?

답변

6

save 전에 유효성 검사가 발생 했으므로 유효성 검사에 "실패"했으며 항상 before_save 콜백이 발생하기 전에 중지되었습니다.

해결 방법은 before_validation 콜백을 사용하는 것입니다.

class ContractType < Lookup 
    before_validation { self.category = "contract_type" } 
end 

오해의 순서에 대해.

관련 문제