что такое attr_accessor в datamapper - ruby - PullRequest
1 голос
/ 16 февраля 2012

Я новичок в datamapper. Я видел этот код на этом форуме.

    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 ... это своего рода поле в модели, но не в базе данных ..

спасибо

Ответы [ 2 ]

3 голосов
/ 16 февраля 2012

Да, вы правы.Это атрибут (поле) вашей модели, но не в вашей базе данных.Вы можете использовать такие атрибуты для хранения данных, которые не следует сохранять в базе данных, но которые каким-то образом полезны для других объектов в вашем приложении.

Например: вы можете определить аксессор для поля модели с именем "пароль".Затем, когда кто-то устанавливает это значение, вы хэшируете его и сохраняете в соответствующем поле в базе данных.

0 голосов
/ 16 февраля 2012

Похоже, пароль не хранится в базе данных, что хорошо.

Пароль сохраняется в объекте пользователя только тогда, когда они говорят первый логин или когда они меняют свой пароль.Поскольку обычное приложение ruby ​​sinatra по существу загружается при каждой загрузке страницы, пароль используется только в то время, как он хэшируется и помещается в БД и т. Д.

Другими словами, часто можно ожидать, что вызов для получения пароляне удастся.Он будет работать только в том случае, если вы все еще обрабатываете событие входа в систему или изменения пароля.

...