チワワかわいいブログ

RUNTEQでrails勉強する日々の記録

2020/12/15 railsチュートリアル8章後半

ログインのテスト

テスト用のデータのpassword_digestにハッシュ化されたパスワードのデータを入れたい
bcryptのハッシュ化をhas_secure_passwordではなく自分で行う方法

 password_digest: <%= User.digest('password') %>

User.digest?レシーバーがUserクラス?
クラスのインスタンスが呼び出せるメソッド=>インスタンスメソッド
クラスがクラスのまま呼び出せるメソッド=>クラスメソッド
なぜクラスメソッドを使うか。
インスタンスメソッドだと、

#メソッドの定義
def digest
#
end
#メソッドの呼び出し
u = User.new
u.digest('foobar')

これを

#メソッドの定義
def User.digest #self.digestでも可
end
#メソッドの呼び出し
User.digest('foobar')

とかける。
新しくデータを0から作るとき、クラスが直接新しい情報を作る・加工するときにクラスメソッドの方が端的にコードをかける。
いまいちわからない

ログアウト
session.delete(:user_id)

この書き方でセッションの引数に渡した項目を削除できる
ちなみに

redirect_to root_url

redirect_toの引数に名前付きルートを渡す場合はpathではなくurl