2016-09-08 4 views
2

나는이 코드를 가지고있다. 그 코드는 작동하지만, 나는 정말로 모른다.validates_confirmation_of : password

암호의 유효성을 검사하지만 어떻게 수행합니까?

나는 attr_reader 및 접근자가 무엇인지 알고 있지만 datamapper가 비교하는 방법을 실제로 이해하지 못합니다. password with : password_confirmation? datamapper는 어떤 마법을 사용합니까? 해당 데이터

post '/sign-up' do 
    new_user = User.create(:username => params[:username], :email => params[:email], :password => params[:password], :password_confirmation => params[:password_confirmation]) 
    session[:user_id] = new_user.id 
    redirect '/welcome' 
    end 
+0

질문하는 내용이 너무 광범위합니다. Ruby를 배우기 시작했을 때 레일스를 먼저 배우는 실수를했습니다. 예를 들어 'property'및'validates' 매크로와 같이 DSL (Domain Specific Languages)을 많이 사용합니다. Ruby를 먼저 배우고 DataMapper와 같은 특정 라이브러리를 배우는 것이 좋습니다. – Kris

+0

안녕하세요, Kris 님, 죄송 합니다만 분명치 않았습니다. 실제로 Ruby를 처음 배우기 시작합니다. 몇 주 후에 Rails가 시작됩니다. 필자는 비슷한 방식으로 datamapper를 사용하기 때문에 Rails가 내 홍보물을 넓힐 수 있기를 희망하면서 Rails에 태그를 지정했습니다. –

+0

레일스에 대해 심판을봤을 때, 나는 또한 DataMapper, Sinatra 등과 같은 모든 라이브러리를 의미합니다 :) – Kris

답변

0

음, 여기 일어나는 docs

validates_confirmation_of의 "마법"입니다입니다 : 여기

require 'data_mapper' 
require 'dm-postgres-adapter' 
require 'bcrypt' 

class User 

    include BCrypt 
    include DataMapper::Resource 

    property :id, Serial 
    property :username, String 
    property :email, String 
    property :password_digest, Text 

    validates_confirmation_of :password 

    attr_reader :password 
    attr_accessor :password_confirmation 

    def password=(password) 
    @password = password 
    self.password_digest = BCrypt::Password.create(password) 
    end 

end 

내 컨트롤러 게시물입니다 : 여기

내 사용자 모델입니다 -mapper는 validates_confirmation_of (이 경우 :password)에 전달한 것과 동일한 이름을 가진 필드를 검색하며마지막에을 입력하고 동등한 지 확인하십시오.

예를 validates_confirmation_of :email에 대한 속성 email_confirmation에 대한 datamapper 보이게하고 :email 동일한 있는지 비교합니다.

attr_reader 및 attr_accessor

attr_readerattr_acessor는 '바로 가기'메소드와 인스턴스 변수를 정의 할 수 있습니다.

  • attr_reader는 : 속성
  • attr_writer을 얻는 방법을 작성하는 속성
  • attr_accessor를 설정하는 방법을 작성

    class Person 
    
        attr_reader :name 
        attr_accessor :gender 
    
    end 
    

    예 모두

를 작성 같은 것 :

class Person 

    def name 
    @name 
    end 

    def gender=(gender) 
    @gender = gender 
    end 

    def gender 
    @gender 
    end 

end 
+0

감사합니다. 너무 많은 lcguida! 정말 물건을 분명히하고 클릭하는 데 도움이! –

+0

기꺼이 도와 드리겠습니다. – lcguida