我是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意味着什么..它是模型中的那种字段,但不是数据库中的字段..
感谢
答案 0 :(得分:3)
是的,你是对的。它是模型的属性(字段),但不在数据库中。您可以使用此类属性来保存不应保存在数据库中的数据,但这对于应用程序中的其他对象有用。
例如:您可以为名为"密码"的模型字段定义访问者。然后当有人设置此值时,您将其哈希并将其存储在数据库的相应字段中。
答案 1 :(得分:0)
看起来密码没有存储在数据库中,这很好。
只有在首次登录或更改密码时,密码才会存储在用户对象中。由于普通的ruby sinatra应用程序实际上是在每个页面加载时引导,因此密码只是在它被散列并放入数据库等时才会出现。
换句话说,您通常可以预期获取密码的调用将失败。它仅在您仍处理登录或密码更改事件时才有效。