2013-09-07 2 views
0

레일 유효성 검사에 조건을 어떻게 추가 할 수 있습니까? 예를 들어 다른 필드로 넘어 가기 전에 모든 필드가 채워 졌는지 확인하십시오.모든 필드가 레일에 루비로 채워지는지 확인하는 방법

+0

모델에서 사용자 지정 유효성 검사를 요청하는 경우 또는 사용자가 양식을 제출하도록 허용하기 전에 양식의 유효성을 검사하겠습니까? –

답변

2

ActiveRecord는 before_validation이라는 콜백 옵션을 제공하여 유효성 검사 전에 메서드를 실행할 수있게합니다. 모델에서

,
class XModel < ActiveRecord::Base 
    ... 
    before_validation :check_for_existence 
    ... 

    private 

    def check_for_existence 
     self.attributes.each do |attr| 
     return false if self[attr].nil? 
     end 
    end 
end 

그래서 기본적으로 check_for_existence 방법은 다른 모든 검증 전에 호출됩니다 추가 할 수 있습니다. check_for_existence 메서드는 모든 개체의 특성을 살펴보고 각 특성의 값을 검사합니다. 둘 중 하나가 nil이면 메서드는 false을 반환하고 이후 콜백은 모두 유효성 검사를 포함하여 취소됩니다.

+0

당신은 facebook 또는 twitter 같이 큰 위치가 그것을하는 방법 방법을 알고있다. –

+0

Francis, 응답자가 귀하의 요구 사항을보다 잘 도울 수 있도록 귀하의 질문을 설명적인 방식으로 다시 작성하는 것을 고려해야합니다. –

+0

'self.attributes.each do | attr |'는 키 옆에있는 값을 필요로합니다. 왜냐하면 키와 값을 가진 배열을 취하고'self [Array]'가 의미가 없기 때문입니다 –

관련 문제