2014-06-17 5 views
0

사용자 모델에 표준 전자 메일 유효성 검사가 있습니다. 요구 사항이 바뀌고 새 유효성 검사에서 정규식으로 형식을 검사하여 전자 메일에 대시가 허용되지 않는다고 말합니다.기존 행을 무효화하는 레일 유효성 검사를 추가하는 방법

문제는 시스템에서 대시가있는 기존 사용자 (현재 허용하고 싶은 사용자)를 확인하지 않으려면 어떻게해야합니까?

모델에 유효성 검사를 적용하면 전자 메일 필드가 유효성을 검사 할 때까지 사용자의 다른 필드를 저장하지 않겠습니다.

어떻게 해결할 수 있습니까? 이런 경우에 가장 좋은 방법은 무엇일까요? 아마 것

+0

기존 사용자가 이메일을 변경하려고하면 어떻게됩니까? @ BroiSatse의 대답은 변경하려는 경우 기존 사용자가 새 이메일에서 대시를 사용하지 못하도록하려면 좋을 것입니다. – gmaliar

답변

2

는 수행

validates :email, format: { with: <new_format_regex> }, if: email_changed? 

if: email_changed?를 추가하면 이메일이 변경되는 경우에만이 검증을 트리거합니다. 따라서 암호를 변경하려고 시도하고 사용자를 생성하는 모든 새 사용자를 트리거하지 않는 한 기존 사용자를 트리거하지 않습니다.