Railsチュートリアル

Rails チュートリアル メモ 第9章

メモ

  • 実装の方針は、ID/PW による認証とほぼ同じ
    • フォームで ID/PW を送信する代わりに、Cookie でID/トークン を送信する
    • PW 同様、トークンもそのまま DB には入れず、ハッシュ化して保存する

  • Active Record が強力すぎて忘れがちだが、Model も単なるクラスなので、attr_accessor でインスタンス変数のゲッタ/セッタが定義できる
  • これで、password のように remember_token を User インスタンス上で扱えるようにする
  • ようするに、チュートリアル内で「仮想的な属性」と呼ばれていたものは、単に「DB 上に存在しない」というだけで、ruby 的には紛れもないメンバー変数の1つ

  • DB には xxx_digest というカラムはあるが、xxx というカラムはない
    • なので、保存したユーザーを検索してきて xxx を調べても、入っているのは nil である
  • しかし、DB に xxx_digest を保存するためには、まず xxx がインスタンスに設定されている必要がある
    • なので、DB に保存する瞬間だけは、xxx を調べると nil でないものが入っている

  • cookies.permanent.signed[:user_id]
  • id = cookies.signed[:user_id]

  • current_user メソッドが複雑になって(責任範囲が広がって)つらくなってきた