railsチュートリアル9章、9.1.1
app/models/user.rbファイルにて
class User < ApplicationRecord attr_accessor :remember_token before_save { email.downcase! } validates :name, presence: true, length: { maximum: 50 } VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(.[a-z\d\-]+)*.[a-z]+\z/i validates :email, presence: true, length: { maximum: 255 }, format: { with: VALID_EMAIL_REGEX }, uniqueness: true has_secure_password validates :password, presence: true, length: { minimum: 6 } # 渡された文字列のハッシュ値を返す def User.digest(string) cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST : BCrypt::Engine.cost BCrypt::Password.create(string, cost: cost) end # ランダムなトークンを返す def User.new_token SecureRandom.urlsafe_base64 end def remember self.remember_token = User.new_token update_attribute(:remember_digest, User.digest(remember_token)) end end
最後のrememberメソッドを定義しているところの、update_attributeの行の文法がイマイチ理解できません。
引数が二つあり、一つ目はハッシュで二つ目はクラスメソッドがきていますがそれぞれの文法的意味からしてよくわかりません。
rememberメソッドの処理内容としては「記憶トークンをハッシュ化し、呼び出したユーザーの記憶ダイジェストに保存する」という風に理解していますが、この一文でなぜそうなるのか理解ができず苦慮しております。
どなたかご享受頂けますでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/29 01:28