2009-08-03 4 views
6

레일즈에서 유효성 검사를 어떻게 동적으로 구성 할 수 있습니까? 예 제가 레일즈 동적 검증

validates_length_of :name, within => dynamic 

변수 "동적"는 사용자에 의해 설정 될 것이다

있는 경우. 저장시 유효성 검사에서는 변수 "dynamic"의 값을 사용하여 내부 구성을 구성해야합니다.

+0

[procs로 동적 유효성 검사 정의] (http://stackoverflow.com/a/9961015/1287376)를 살펴보십시오. –

답변

13

validates_length_of이 동적 매개 변수를 지원하지 않는다고 생각합니다. 사용자 정의 유효성 검사에서 동작을 복제해야합니다.

# in model 
def validate 
    unless (5..10).member? name.length 
    errors.add :name, "must be within 5 to 10 characters" 
    end 
end 

정적 범위를 사용하지만 사용자 정의 범위 변수를 쉽게 사용할 수 있습니다.

def validate 
    unless some_range.member? name.length 
    errors.add :name, "must be within #{some_range.first} to #{some_range.last} characters" 
    end 
end 

당신은 내 Everyday Active Record seriesRailscasts episode on conditional validations 및 에피소드 3을 체크 아웃 할 수 있습니다.

+0

답변 해 주셔서 감사합니다. validates_presence_of에 dynamic 변수가 필요합니다 : validates_presence_of : name, : locales => dynamic_array (: 로케일은 동적 일 수 있습니다 : [, en, : de, ...] 동적). 구성 : validates_presence_of에 의한 로케일은 i18n_multi_locales_validations 플러그인과 함께 제공됩니다. – phlegx