validates_confirmation_of :密码
validates_confirmation_of :password
我有这段代码,可以使用,但我不确定如何使用?
它验证密码,但它是如何做到这一点的?
我知道什么是 attr_reader 和访问器,但并不真正理解 datamapper 如何知道将 :password 与 :password_confirmation 进行比较? DataMapper 有什么神奇之处?
这是我的用户模型:
require 'data_mapper'
require 'dm-postgres-adapter'
require 'bcrypt'
class User
include BCrypt
include DataMapper::Resource
property :id, Serial
property :username, String
property :email, String
property :password_digest, Text
validates_confirmation_of :password
attr_reader :password
attr_accessor :password_confirmation
def password=(password)
@password = password
self.password_digest = BCrypt::Password.create(password)
end
end
这是我的控制器post:
post '/sign-up' do
new_user = User.create(:username => params[:username], :email => params[:email], :password => params[:password], :password_confirmation => params[:password_confirmation])
session[:user_id] = new_user.id
redirect '/welcome'
end
嗯,这是 validates_confirmation_of
的 docs
"magic" 发生的只是数据映射器将搜索与您在 validates_confirmation_of
中传递的字段同名的字段(在本例中为 :password
) _confirmation
并验证它们是否相等。
例如 validates_confirmation_of :email
将使数据映射器查找属性 email_confirmation
并比较它是否等于 :email
.
attr_reader 和 attr_accessor
attr_reader
和attr_acessor
只是'shortcuts'定义方法和实例变量。
attr_reader
: 创建获取属性的方法
attr_writer
:创建一个设置属性的方法
attr_accessor
:同时创建
例如:
class Person
attr_reader :name
attr_accessor :gender
end
与以下相同:
class Person
def name
@name
end
def gender=(gender)
@gender = gender
end
def gender
@gender
end
end
我有这段代码,可以使用,但我不确定如何使用?
它验证密码,但它是如何做到这一点的?
我知道什么是 attr_reader 和访问器,但并不真正理解 datamapper 如何知道将 :password 与 :password_confirmation 进行比较? DataMapper 有什么神奇之处?
这是我的用户模型:
require 'data_mapper'
require 'dm-postgres-adapter'
require 'bcrypt'
class User
include BCrypt
include DataMapper::Resource
property :id, Serial
property :username, String
property :email, String
property :password_digest, Text
validates_confirmation_of :password
attr_reader :password
attr_accessor :password_confirmation
def password=(password)
@password = password
self.password_digest = BCrypt::Password.create(password)
end
end
这是我的控制器post:
post '/sign-up' do
new_user = User.create(:username => params[:username], :email => params[:email], :password => params[:password], :password_confirmation => params[:password_confirmation])
session[:user_id] = new_user.id
redirect '/welcome'
end
嗯,这是 validates_confirmation_of
"magic" 发生的只是数据映射器将搜索与您在 validates_confirmation_of
中传递的字段同名的字段(在本例中为 :password
) _confirmation
并验证它们是否相等。
例如 validates_confirmation_of :email
将使数据映射器查找属性 email_confirmation
并比较它是否等于 :email
.
attr_reader 和 attr_accessor
attr_reader
和attr_acessor
只是'shortcuts'定义方法和实例变量。
attr_reader
: 创建获取属性的方法attr_writer
:创建一个设置属性的方法attr_accessor
:同时创建
例如:
class Person
attr_reader :name
attr_accessor :gender
end
与以下相同:
class Person
def name
@name
end
def gender=(gender)
@gender = gender
end
def gender
@gender
end
end