我正在阅读教程(我必须说这是一个很好的资源),但我不太了解以下内容:
在第 6.3.1 节中,我们通过创建和运行迁移脚本在数据库中创建一个 password_digest 列:
rails generate migration add_password_digest_to_users password_digest:string
bundle exec rake db:migrate
bundle exec rake db:test:prepare
bundle exec rspec spec/
然后在 Rails 控制台上,我可以实例化一个用户模型对象并在其上设置 password_digest:
irb(main):007:0> @user = User.new
=> #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil, password_digest: nil>
irb(main):008:0> @user.password_digest = "zzzz" => "zzzz"
irb(main):009:0> @user.password_digest => "zzzz"
但是我在 User 模型类定义中看不到 password_digest 属性:
class User < ActiveRecord::Base
attr_accessible :email, :name
before_save { |user| user.email = email.downcase}
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :name, presence: true, length: {maximum: 50}
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX}, uniqueness: {case_sensitive: false}
end
我想 Rails 在幕后做了一些魔术,有人介意解释一下它在做什么吗?
谢谢!