2017-12-26 5 views
0
나는 닉네임을 확인하고자하지만이 같은 형식의 많은이

의 많은 검증 :레일 : 형식

validates :nickname, presence: true, unniqueness: true, format: { with: /\A[a-zA-Z0-9]+\Z/ }, format: { without: /\s/ }, format: { without: /[!-\/\@\^\~\`\(\)\[\]\>\<\=]/ } 

warning: key :format is duplicated and overwritten on line 38 
warning: key :format is duplicated and overwritten on line 38 

분명히 이런 식으로 일을 down't, 내가 그것을 어떻게 해결할 수 있습니까?

답변

2

첫 번째 정규식이 모든 것을 커버 해 주셔서 감사합니다 :

format: { with: /\A[a-zA-Z0-9]+\Z/ } 

을하지만 당신은 아마 뒤에 줄 바꿈 문제를 피하기 위해 대신 \Z\z를 원한다. /\A[a-zA-Z0-9]+\z/과 일치하는 것은 공백 문자를 포함하지 않으므로 구두점 테스트와 마찬가지로 /\s/ 테스트가 이미 적용되었습니다.

또한 uniqueness의 맞춤법이 잘못되었으므로 unniqueness으로 수정해야합니다.

그건 그냥 당신을 떠날 것이다 :

validates :nickname, presence: true, uniqueness: true, format: { with: /\A[a-zA-Z0-9]+\Z/ } 

당신이 정말로 않은 경우 사용자 정의 방법에 그것을 할 수 다음 테스트하기 위해 여러 정규 표현식에 있습니다 각을 확인할 수 있도록

validate :nickname_format 

def nickname_format 
    return if(!nickname) # The `presence: true` takes care of complaining about this. 
    if(nickname ~! ...) 
    errors.add(:nickname, 'blah blah') 
    elsif(...) 
    ... 
    end 
end 

을 정규식 개별적으로.

+0

대단히 감사합니다. – rod