-2
我正在嘗試學習Ruby和RoR。 我被Ruby的魔法:)混淆RoR模型中的獲取者
class User < ActiveRecord::Base
require 'digest/sha1'
validates :login, :password, :email, { presence: true }
validates :login, :email, { uniqueness: true }
before_save :hash_password
private def hash_password
if password_chanched?
puts @password.class.name
puts password
password = 'test_pass'
puts password
# @password = Digest::SHA1.hexdigest(password) it works
end
end
end
控制檯:
>> t = User.new login: 'Test', email: '[email protected]', password: 'trololo'
#<User id: nil, login: "Test", password: "trololo", email: "[email protected]", created_at: nil, updated_at: nil>
>> t.save
NilClass
trololo
test_pass
true
>> t.password
"trololo"
所以我的問題是:
什麼密碼回報?我有什麼修改回調?
其實,這before_validation回調只是正常:
def downcase_login_and_email
login.downcase!
email.downcase!
end
不知道我理解的問題,是U詢問'password'或回調? – 2015-04-01 19:35:11
Both :) 對不起我的英語。 – Nondv 2015-04-02 08:12:11