2013年1月24日木曜日

Railsのdeviseを使ってみる ~自動生成された標準の画面を調べよう~

この間の続きでdeviseを使ってみようというはなし。

前提は以下。

  • deviseのインストールは終了
  • rails generate devise:install を実行し設定ファイルはできてる
  • rails generate devise:view を実行し標準のビューはできてる
  • rails generate devise devise_user を実行しdevise用のモデルはできてる
それを踏まえて色々(ルーティングとか画面表示とか中身とか)調べてみたい。
とは言っても闇雲に調べても効率が悪いので以下の感じで行ってみる。
#全然関係ないですが、『やみくも』 と 『くらやみのくも』 って似てますね。


STEP1 中身を調べる

  • ルーティングを調べる(まずはリクエスト可能なURLを一覧を知ろう)
  • モデルの中身を調べる(ざっくりどんなフィールドがあるかぐらいを知ろう)
  • コントローラの中を調べる(ちょろっと見て感覚をつかもう)
  • 各URLをリクエストしてみる(とりあえず打ってみよう)
  • どんな画面が表示されるか見てみる(とりあえず見てみよう)
  • セッションデータには何が入っているか見てみる(セッション管理は認証のキモなので)

STEP2 STEP1を踏まえて自分ちのアプリでの組み込み方を調べたり考えたりする
  • 自分ちのアプリにどう組み込めばいいか(画面遷移とかログアウトリンクの配置とか)
  • 画面のカスタマイズはどうするか(多分URLとパラメータ名変えれば好きな様にできるんだろうけど)
  • モデルのカスタマイズはどうするか(これもそれほど悩まないはず)
  • コントローラのカスタマイズはどうするか(というかどうやるか)


というわけでまずはルーティングについて調べてみる。


rakse routes を実行してdevise 関連の部分を抜いたのがコレ。
#ヘルパーメソッド名は紙面の都合(横幅)上表示をあきらめた。


HTTPメソッドurlルートパラメータ
GET/devise_users/sign_in(.:format)devise/sessions#new
POST/devise_users/sign_in(.:format)devise/sessions#create
DELETE/devise_users/sign_out(.:format)devise/sessions#destroy
POST/devise_users/password(.:format)devise/passwords#create
GET/devise_users/password/new(.:format)devise/passwords#new
GET/devise_users/password/edit(.:format)devise/passwords#edit
PUT/devise_users/password(.:format)devise/passwords#update
GET/devise_users/cancel(.:format)devise/registrations#cancel
POST/devise_users(.:format)devise/registrations#create
GET/devise_users/sign_up(.:format)devise/registrations#new
GET/devise_users/edit(.:format)devise/registrations#edit
PUT/devise_users(.:format)devise/registrations#update
DELETE/devise_users(.:format)devise/registrations#destroy



なんかそれっぽい予想で整理・和訳すると。

【ログイン処理(sessions コントローラ)】
ログイン画面表示 /devise_users/sign_in
ログイン処理 /devise_users/sign_in
ログアウト /devise_users/sign_out

だと思う。
初め見た時は、
『なんだ、ログイン画面表示とログイン処理のURLが一緒じゃないか』、と思ったらHTTPメソッドがPOSTとGETと異なっていて、呼び出されるアクションもnew と create で違っていたので、
『ああ、GETでログイン画面表示してPOSTでログインね』
と納得できた。
Rails(というか多分Rest)的によくあるやつだと思う。

次にregistrationsの方。
#passwordはどういう画面か分からなかったので理解しやすそうな方から行きます。
【ユーザ登録・編集(registrationsコントローラ】
ユーザ登録画面表示 /devise_users/sign_up
ユーザ登録 /devise_users
ユーザ登録キャンセル /devise_users/cancel
ユーザ編集画面表示 /devise_users/edit
ユーザ登録 /devise_users

今度は /devise_users が3つも登場しているがコントローラのアクションで見ると以下の動きが予測(たぶん)できる。
  • ユーザ登録 registrations#create ⇒ HTTPのPOSTメソッドで飛んできたらこっちのアクションを発動させて新規登録する
  • ユーザ編集画面表示 devise/registrations#update ⇒ HTTPのPUTメソッドで飛んできたらのアクションを発動させて編集する
  • ユーザ登録 devise/registrations#destroy ⇒ HTTPのDELETEメソッドで飛んできたらコッチを発動させる

あってるかはどうかは画面を表示させたりすればたぶんわかるでしょう。

で、最後にパスワードだけどこれがよくわからん。
【パスワード処理(passwordsコントローラ)】
パスワード更新画面表示 /devise_users/password/edit
パスワード??? /devise_users/password/new
パスワード登録??? /devise_users/password
パスワード更新 /devise_users/password

更新画面表示と更新は分かる。
なにがわからないかというと以下二点。
  • ユーザ登録時にパスワード登録してるはずだから新規とかおかしいんじゃね?
  • パスワードはユーザのモデルに含まれるんだから新規とかパスワードの新規とか変じゃね?

この辺をソースを読んだり画面を見たりして理解していくことにしよう。

長くなったので今回は以上になります。

0 件のコメント:

コメントを投稿