acts_as_authenticatedを読む。

行けなかったけれど聞きたかったRails勉強会@東京第22回のacts_as_authenticated話のレポートをYuguiさんが書かれていたので、読みながら気になったところを書き出して、放置してしまっていたメモを大公開。だれかの「なるほど」の種になれば。

Yuguiさんの「acts_as_authenticatedとは」とともに。レポートの詳細っぷりはありがたいです。

2007年09月 @ 過去ログ @ ratio – rational – irrational @ IDM

最初の2行はRailsでモデルオブジェクトを編集するときの頻出パターンだね。と、まあ初心者セッションだから、その辺もフォロー。

こういう、教科書に載ってない的な話が聞けるのが勉強会のうれしいところだよなぁ。

2007年09月 @ 過去ログ @ ratio – rational – irrational @ IDM

実はRailsのvalidationはActiveRecordで自動生成された属性以外にも使える。その属性がありさえすればよい。

これは覚えておくと得しそう。

AuthenticatedSystem#current_user()
ココ、ぱっとみて:falseってなんだ、と思ったら

2007年09月 @ 過去ログ @ ratio – rational – irrational @ IDM

ここで、:falseなんていう変なシンボルを使ってる意味がわかんないよねー、と私と諸橋さんはセッションでぶちぶち言ってたけど、今気がついた。

お、

2007年09月 @ 過去ログ @ ratio – rational – irrational @ IDM

あちこちで@current_user ||=というコードが実行されることになるから、「ログイン状態未知」と「非ログイン状態」を区別する必要がある。ここで@current_userにnilとかfalseを入れておくと本来は「非ログイン状態」であることは既知の筈なのに、毎回ログインを試みて失敗することになり無駄なクエリが走るのだ。それで、「無効値であることが見た目に分かりやすく、かつ、Rubyにとっては真として評価される」値が必要なんだ。

おー!「||=」のためか、なるほど!

AccountController#signup()
beginとendで囲っていない、rescueがこんな風に書けるんだ。

generate authenticatedしたあとに出来たファイルをひとつひとつ眺めてみたところ、

  • app/controllers/account_controller.rb
  • app/models/user.rb
  • lib/authenticated_system.rb

の3つを読めば把握できるみたいだ。まだまだなるほどの連続、楽しい。

[ref.] Acts as Authenticated

タイトルとURLをコピーしました