2008-09-19 2 views
12

나는이 :내 ActiveRecord 모델에 대한 매개 변수가있는 사용자 지정 유효성 검사 메서드를 작성하려면 어떻게해야합니까? 내 모델에서

validate :my_custom_validation 

def my_custom_validation 
errors.add_to_base("error message") if condition.exists? 
end 

내가 지금처럼 vaildation mycustomer 몇 가지 매개 변수를 추가하고 싶습니다 :

validate :my_custom_validation, :parameter1 => x, :parameter2 => y 

가 어떻게 매개 변수를 설명하는 mycustomvalidation 함수를 작성합니까?

답변

6

일반적으로 유효성 검사기에는 유효성을 검사 할 필드와 마지막으로 옵션이있는 해시 (존재하는 경우)를 나타내는 배열 매개 변수가 있습니다.

:my_custom_validation, parameter1: x, parameter2: y 

: 당신이 좋아하는 일을 할 것입니다 따라서

{ parameter1: x, parameter2: y} 

, : X, 매개 변수 2가 : y는 해시 것 매개가 동안 my_custom_validation가, 필드 이름이됩니다

당신의 예에서
def my_custom_validation(*attr) 
    options = attr.pop if attr.last.is_a? Hash 
    # do something with options 
    errors.add_to_base("error message") if condition.exists? 

end 
2

당신은 같은 것을 할 수 있습니다

def validate 
    errors.add('That particular field', 'can not be the value you presented') if !self.field_to_check.blank? && self.field_to_check == 'I AM COOL' 
end 

내가 validate 메소드는 어떤 validates_uniqueness_of -like 검증 후 (있는 경우) 처리 할 생각으로,이를 참조 호출 할 필요합니다.

추가됨 : Rails API 문서 here에 대한 추가 정보.

관련 문제