在 Michael Hartl 教程的第 8 章中,我们设置了登录页面并在数据库中创建了一个新列来保存一个 base 64 字符串。在本教程中,它被称为 remember_token。在 user.rb 中:
private
def create_remember_token
self.remember_token = SecureRandom.urlsafe_base64
end
self 有一个名为 remember_token 的属性?这是已经内置的还是在其他地方创建的?也许我只是不太了解这一点。
他写:
由于 Active Record 基于数据库列合成属性的方式,没有 self 赋值会创建一个名为 remember_token 的局部变量,这根本不是我们想要的。使用 self 可确保赋值设置用户的 remember_token 以便在保存用户时将其与其他属性一起写入数据库。
我很困惑,用户是如何获得记忆令牌的?它如何知道将其写入该特定列中的数据库?
在 user.rb 中,您有以下代码:
attr_accessible :name, :email, :password, :password_confirmation
那里没有关于 remember_token 的内容。它怎么知道在 User.save 中包含这个?