2012-11-30 4 views
1

코드는 다음과 같습니다Rails3.2.9에서 validate 함수가 호출되지 않는 이유는 무엇입니까? 다음과 같이

class Seat < ActiveRecord::Base 
    attr_accessible :baggage, :flight_id, :name 
    def validate(record) 
    errors.add_to_base("You have too much baggage") 
    end 
end 

나는 새 레코드가 데이터베이스에 wriiten 때마다이 오류가 발생 예상. 새로운 기록은 사람이에 대한 아이디어가 있습니까

@seat.save에 의해 seats 데이터베이스에 wriiten 때

그러나, 아무 일도하지?

+0

레코드 매개 변수 ('def validate ... end')없이 시도 했습니까? 또한, 레일 3에 대한 add_to_base는 [deprecated] (http://apidock.com/rails/ActiveRecord/Errors/add_to_base)라고 생각합니다. – buftlica

답변

5

validate(record) 이상하게 보입니다. 당신은

class Seat < ActiveRecord::Base 
    attr_accessible :baggage, :flight_id, :name 
    validate :valid_baggage 

    def valid_baggage 
    errors.add_to_base("You have too much baggage") 
    end 
end 

은 또한 예외를 얻기 위해 (대신 @seat.save의) @seat.save!를 호출 할 필요가 있습니다 시도해야합니다. @seat.save은 true 또는 false만을 반환합니다 ...하지만 일반적으로 원하는 것이므로 예외를 발생시키려는 것이 좋습니다.

0

custom validator을 구현하는 경우에만 record 매개 변수가 필요합니다. 그렇지 않으면 메서드에서 이미 유효성 검사중인 레코드를 알고 있습니다 (자체).

관련 문제