什么是datamapper中的attr_accessor - ruby

时间:2012-02-16 17:05:57

标签: sinatra datamapper

我是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 个答案:

答案 0 :(得分:3)

是的,你是对的。它是模型的属性(字段),但不在数据库中。您可以使用此类属性来保存不应保存在数据库中的数据,但这对于应用程序中的其他对象有用。

例如:您可以为名为"密码"的模型字段定义访问者。然后当有人设置此值时,您将其哈希并将其存储在数据库的相应字段中。

答案 1 :(得分:0)

看起来密码没有存储在数据库中,这很好。

只有在首次登录或更改密码时,密码才会存储在用户对象中。由于普通的ruby sinatra应用程序实际上是在每个页面加载时引导,因此密码只是在它被散列并放入数据库等时才会出现。

换句话说,您通常可以预期获取密码的调用将失败。它仅在您仍处理登录或密码更改事件时才有效。