devise
Rails5
DeviseGem

【勉強メモ】deviseを実装させる②【挫折しない!】

More than 1 year has passed since last update.

前回やったこと

【勉強メモ】deviseを実装させる①【挫折しない!】
https://qiita.com/takatoshi0905/items/d39832df81f3c6550b42
・deviseのgemをインストールした。
・deviseのモデルをつくった
・ログイン画面になるようにルート設定した。
・gemとは「宝石」という意味だということを理解した!

今回やること

新規登録、ログイン、ログアウト、プロフィール変更の画面を作る

ログイン状態の有無を確認

さて、viewファイルにログイン状態を記述する必要があるわけだが

<モデル名>_signed_in?

で、「<モデル名>でログインしているの?」っていうことを意味する。

今回はモデル名をuserで作成したから、

user_signed_in?

になる。

だから、viewファイルのruby記述は

if user_signed_in? #ログインしてる?って意味
  <ログインしている時のHTML>
else
 <ログインしていない時のHTML>
end

っていうことになるわけか。

2、実際にviewに記述してみる。

app/views/layouts/application.html.erb
<% if user_signed_in? %>
     このメールアドレスで君はログインしているんだね→<%= current_user.email %>
    <%= link_to "ログアウト", destroy_user_session_path, method: :delete %>
    <%= link_to 'プロフィール変更', edit_user_registration_path %>
  <% else %>
    <%= link_to "新規登録", new_user_registration_path %> |
    <%= link_to "ログイン", new_user_session_path %>
  <% end %>

でやってみた。

app/views/layouts/application.html.erb に記述するのは、すべての画面の中に、共通して表示させる内容だからだね。

あと、上の記述のなかでの

current_user

がキーポイントになりそうだ。読み方は「カレントユーザー」で合ってるのかしら?

current_user.email

で、current_userのemailを表記するという意味なのだろう。

っていうことは、current_user.passwordと記述したら、ログインユーザーのパスワードが表示されてしまうということか???

あとでこっそり試してみることにするwww

3.実際の画面はこんなの

【新規登録画面】

スクリーンショット 2017-10-08 16.49.01.png

【ログイン画面】

スクリーンショット 2017-10-08 16.50.10.png

【プロフィール変更画面】

スクリーンショット 2017-10-08 17.11.27.png

5.コントローラもビューもつくった覚えないんだけど...

 そういえば、ここまででview画面とかcontrollerの設定とか一切いじっていない。だけど、普通にログイン画面になったり新規登録画面になったりしている。プロフィール変更のビュー&コントローラーなんかいつの間につくったんだ?

 いじったとすれば app/views/layouts/application.html.erbにちょこちょこっとリンクを貼り付けただけだ。

 もう一度、app/views/layouts/application.html.erbをみてみると…

app/views/layouts/application.html.erb
<%= link_to "ログアウト", destroy_user_session_path, method: :delete %>
<%= link_to 'プロフィール変更', edit_user_registration_path %>
<%= link_to "新規登録", new_user_registration_path %> |
<%= link_to "ログイン", new_user_session_path %>

destroy_user_session_path, method: :deleteとか、edit_user_registration_pathってところにヒントがありそうだ。

 あ、分かった。

 そうか、deviseというのは、これらを上記の記述をするだけでプロフ変更画面とかログアウトメソッド的なやつとかを行ってくれるということか。

 これは便利。楽だね。gemが宝石っていうことの意味がなんとなく分かった。

4.でも、英語ばかりでキモいんですけど…

 deviseの素晴らしさ、宝石と呼ばれる所以は理解した。すごいね、devise。

 だけどさ、英語ばっかりで正直キモい。英語圏の人がつくった宝石だからなのだろうけど、これはキモい。自分も含めて英語がサッパリの日本人が実際にこのwebページをみたら怪しさしかないよね。絶対に個人情報を抜かれると思うよ。警戒心しかない。

 これ、日本語表記に、さらに自分なりの文言でプロフィール変更ページとかつくれないものかね? どこかのファイルで書き換えられないのかしらね?。