2012-02-16 1 views
1

저는 datamapper에 newby입니다. 나는이 포럼에서이 코드를 보았다.datamapper - ruby의 attr_accessor는 무엇입니까?

class User 
    include DataMapper::Resource 

    property :id,     Serial 
    property :email,    String, :required => true, :unique => true, :format => :email_address, 
    property :name,    String 
    property :hashed_password, String 
    property :salt,    String 
    property :created_at,   DateTime 

    attr_accessor :password, :password_confirmation 

속성은 ..이 attr_accessor 모델에 있지만 데이터베이스에에게 필드의 종류를 means..is 않습니다 table..what 데이터베이스의 필드를 정의하는

감사

답변

3

네, 맞습니다. 모델의 특성 (필드)이지만 데이터베이스에는 없습니다. 이러한 속성을 사용하여 데이터베이스에 저장해서는 안되지만 응용 프로그램의 다른 객체에 유용하게 사용할 수 있습니다.

예를 들어, "password"라는 모델 필드에 접근자를 정의 할 수 있습니다. 그런 다음 누군가가이 값을 설정하면이를 해싱하여 데이터베이스의 해당 필드에 저장합니다.

0
을 의미

암호가 데이터베이스에 저장되어 있지 않은 것 같습니다.

암호는 처음 로그인 할 때 또는 암호를 변경할 때만 사용자 개체에 저장됩니다. 정상적인 루비 sinatra 애플 리케이션은 본질적으로 각 페이지로드 시동하기 때문에 암호가 해시되고 db 등으로 들어가는 동안 암호가 주위에 있습니다.

즉, 종종 암호를 얻으려는 호출이 실패 할 것으로 예상 할 수 있습니다 . 여전히 로그인 또는 암호 변경 이벤트를 처리하는 경우에만 작동합니다.

+0

나는 그것을 이해한다. attr_accessor는 모델의 필드에 있지만 데이터베이스에는 없다. – coool

+0

맞다. –