2014-06-17 1 views
0

ActiveRecord 유효성 검사를 사용자 지정 오류 메시지와 함께 사용했습니다. 오류 메시지에서 하나 이상의 특성을 표시하려고합니다. 예를 들어 다음 코드는 유효성 검사가 실행중인 값만 표시합니다.활성 레코드 유효성 검사 메시지에 다른 속성을 표시하는 방법

class Coffee < ActiveRecord::Base 
    validates :size, inclusion: { in: %w(small medium large), 
    message: "%{value} is not a valid size" } 
end 

가 나는 또한 유형 (가정 형 커피 테이블의 필드) 보여줄 수, 모두 시도를 다음 작동하지 않습니다

class Coffee < ActiveRecord::Base 
    validates :size, inclusion: { in: %w(small medium large), 
    message: "%{value} is not a valid size for type: %{type}" } #`method_missing': undefined local variable or method `type' 
    message: "%{value} is not a valid size for type: #{type}" } #Error: i18n::MissingInterpolationArgument 
end 

버전 :

ActiveRecord: 3.1.6 
Ruby: ruby-1.9.3-p429 

답변

2

당신은`lambda`를 사용하여이

class Coffee < ActiveRecord::Base 

validates :size, inclusion: { in: %w(small medium large), :message=> lambda { |e| "#{e.size} is not a valid size for type #{e.type}"} 

end 
+1

일처럼 lambda을 사용할 수 있습니다 .. –

2

당신이 할 수있는 이 사용자 지정 유효성 검사를 사용하여

class Coffee < ActiveRecord::Base 
    validate :size_for_type 

    def size_for_type 
    unless %w(small medium large).include?(size) 
     errors.add(:size, "%{value} is not a valid size for type: #{type}") 
    end 
    end 
end 
관련 문제