私はRuby on Railsの新機能です。アクティブレコードコールバックの使用を中止しました。私は方法を知っているを使用するが、私は本当にしようとしている何が起こっている、と私はそれを取得していない。私の混乱は、Rubyの可変スコープと関係しています。ここでアクティブレコードコールバック。彼らはどのように変数/スコープにアクセスできますか?
は、フィールドを持つユーザーのためのシンプルなのActive Recordクラスです:電子メール、password_hash、この方法では
class User < ActiveRecord::Base
attr_accessor :password
before_save :encrypt_password
#validation
validates :password, :confirmation => true
validates :email, :password, :presence => true
validates :email, :uniqueness => true
#When saving the user, encrypt the password
def encrypt_password
#First check if the password is present
if (password.present?)
#encrypt the password
self.password_salt = BCrypt::Engine.generate_salt
self.password_hash = BCrypt::Engine.hash_secret(password, password_salt)
end
end
end
をpassword_salt "encrypt_password"、どのように変数 "パスワード" はアクセス可能でしょうか? self.password(object var?)と同じですか?これは@passwordと同じではありませんか? (なぜ?)
実際の暗号化ルーチンでは、私はself.password_saltを呼び出します。私は単に "password_salt"(自己を参照することなく)をタイプすることができ、動作しないことに気づいた。何故なの?なぜこれは@password_saltと異なるのですか?
申し訳ありませんこれはnoobishとして出会えば、私はこれを離れてバッシングをするのに十分な時間を費やしました。私はこれを理解するのに苦労しています。
それだけです。説明をありがとう。 :) –