2

고유성 유효성 검사에 사용자 지정 유효성 검사 메시지를 제공하려고합니다. 그러나 약간의 복잡한 동작이 필요한 오류 메시지 때문에이 논리를 개인 메서드 (error_message_for_email_uniqueness)에 넣고 있습니다.도우미 메서드를 사용하는 레일 사용자 지정 유효성 검사 메시지

여기에 여기에 내가 또한 작동하지 않는, message: lambda { error_message_for_email_uniqueness }를 사용하려고했습니다

/Users/dylandrop/.rvm/gems/ruby-1.9.2-p290/gems/attr_encrypted-1.2.0/lib/attr_encrypted.rb:229:in `method_missing': undefined local variable or method `error_message_for_email_uniqueness' for #<Class:0x00000103684198> (NameError) 

을지고있어 오류의 내가

validates_uniqueness_of :email, message: error_message_for_email_uniqueness 

을 사용하고 코드입니다. 또한, 나는 Proc 대신 람다 대신에 랩핑을 시도했다.

어떻게이 문제를 해결할 수 있습니까?

답변

2

error_message_for_email_uniqueness를 클래스 메소드로 정의 했습니까?

나는 빠른 테스트를했고,이 잘 작동합니다 :

validates_uniqueness_of :email, message: Proc.new { error_message_for_email_uniqueness } 

def self.error_message_for_email_uniqueness 
    # logic to generate message goes here 
end 
+0

오 나는 람다와 클래스 메서드로 시도하지 않았다. 그것을 인스턴스라고 가정합니다. 람다를위한 매개 변수가 필요한가요? – varatis

+0

params없이 시험해 보니 작동하는 것 같아서 대답을 편집했습니다. 참조 할 수도 있습니다 : http://stackoverflow.com/questions/6073303/how-to-customize-rails-activerecord-validation-error-message-to-show-attribute-v –

+1

또한, 당신은/레코드를'error_message_for_email_uniqueness'에 전달할 수 있습니까? 나는 당신이 오류와 속성을 전달할 수 있다는 것을 알고 있지만, 저장되는 레코드가 새로운 것인지 아닌지 확인해야합니다. – varatis

0

동적 모델 속성 또는 메시지 문자열이 될 것으로 예상되기 때문에 무엇인가, 당신은 사용자 정의 유효성 검사기를 작성해야에 따라 메시지를 생성합니다.

+0

문제는'validates_uniqueness_of'를 다시 만들고 싶지 않습니다. – varatis

관련 문제