2

은 내가

사용자라는 모델에 속하는 속성이라는 암호를 가지고 사용자 정의 유효성 검사가 findUpperCaseLetter라는 방법 또는 이와 유사한

을 만들 필요가 내 방법은 다소 유사하다 루비 온 레일즈에 지정 유효성 검사 방법을 추가 다음과 같은. 암호 속성은 적어도 대문자가 있어야합니다

def findUpperCaseLetter(username) 
    username.each_char do |character| 
      return true if character=~/[[:upper:]]/ 
    end 

    return false 

    end 

나는 내가 수정하는 방법 다음 일반 expreession

validates_format_of :password, :with => /^[a-z0-9_-]{6,30}$/i, 
    message: "The password format is invalid" 

에게 이미 가지고있는 사용자 모델

class User < ActiveRecord::Base 
    attr_accessible :user_name,:email, :password 
    validates_presence_of :user_name,:email, :password 
    validates_uniqueness_of :user_name,:email 
    ???? 
end 

이 유효성 검사를 추가하려면 그것을 위해 다음을 추가하십시오 :

암호는 최소한 하나 이상 대문자 편지

+0

'validate : findUpperCaseLetter (username)'가 작동하지 않습니까? – Jadam

답변

1

사용자 지정 유효성 검사가 필요하지 않은 경우 regex를 사용하여 암호 형식의 유효성을 검사 할 수 있습니다. 필드에만 Can't be blank 오류 메시지가 아닌 형식 유효성 검사기 오류 메시지를 비어있을 때 모델 레일

validates :password, format: { with: /^(?=.*[A-Z]).+$/, allow_blank: true } 

이 추가, 당신은 format 검사기를 사용하여이 작업을 수행 할 수 있습니다, 나는 확인 allow_blank: true을 추가했습니다.

이 정규 표현식의 작업은 적어도 하나의 대문자가 포함 된 경우에만 데이터베이스에 암호를 저장할 수있게하는 것입니다. 나는 rubular에 permalink를 창조했다, 여기에서 누르십시오 http://rubular.com/r/mOpUwmELjD

희망은 이것 도움!

+0

Isnt'/ [A-Z] + /'충분합니까? – Santhosh

+2

히야, 이것으로 문제가 해결 될지도 모르지만 답을 편집하고 어떻게 작동하는지, 이유에 대해 조금 더 설명하면 좋을 것입니다. :) 잊지 마세요 - 스택에 초보자의 힙이 있습니다. 넘쳐 흐르고, 당신의 전문 지식에서 한두 가지를 배울 수 있습니다. 당신에게 명백한 것은 그들에게 그렇게 좋지 않을 수도 있습니다. –

+0

@Santosh 네 너무 효과가 있습니다! – RSB