这是一个简单的注册应用程序
架构.rb
create_table "users", :force => true do |t|
t.string "email"
t.string "password_hash"
t.string "password_salt"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
用户.rb
attr_accessible :email, :password, :password_confirmation
attr_accessor :password
before_save :encrypt_password
validates_confirmation_of :password
validates_presence_of :password, :on => :create
validates_presence_of :email
validates_uniqueness_of :email
.
.
.
为什么在 attr_accessible 和 attr_accessor 中都使用密码?
当我在 Rails 控制台中删除 attr_accessor :password 时,执行时出现错误:
user = User.new
user.password # => no method error
但是当我执行这个时:
user = User.new
user.email # => nil
这意味着 user.email 没有在 attr_accessor 中添加它就可以工作,为什么?!
这也有效:
user = User.new
user.password_confirmation # => nil
但是当我删除时:
validates_confirmation_of :password
它不会工作,为什么??