前提・実現したいこと
11.3.1 authenticated?メソッドの抽象化について質問があります。
rails
1(app/models/user.rb) 2 def authenticated?(remember_token) 3 return false if remember_digest.nil? 4 BCrypt::Password.new(remember_digest).is_password?(remember_token) 5 end
上のメソッドを下のように書き換えてますが、
rails
1(app/models/user.rb) 2 def authenticated?(attribute, token) 3 digest = send("#{attribute}_digest") 4 return false if digest.nil? 5 BCrypt::Password.new(digest).is_password?(token) 6 end
なぜこのように書き換えられるのかが分かりません。
self.send("remember_digest")
-> send("#{attribute}_digest")
となってますが、この場合 attribute は remember なのでしょうか。attribute が remember だと定義されてましたでしょうか?
変更前後のuser.rbはこちらになります。
Rails Tutorial 10章 user.rb
Rails Tutorial 11章 user.rb
ご教授よろしくお願いします。
先頭の「11.3.1 authenticated?メソッドの抽象化」のリンクが無関係なページになっているようです。