Railsのログイン認証gemのDeviseの実践

前回、インストールまではできているので続き

まずはdeviseのメール送信時のホスト名を指定

config/environments/development.rb

 config.action_mailer.default_url_options = { host: 'localhost:3000' }

を追加

もし、cloud9 の場合には

  #devise 設定
  config.action_mailer.delivery_method = :test
  host = 'http://techacademy-snowpooll.c9users.io'
  config.action_mailer.default_url_options = { host: host }

というようにホスト名をいれる

追記場所は
最終行の end の前の行

次に root_urlを指定 
deviseはログアウト時などのリダイレクト先としてroot_urlを使うため
これがないとエラーになるため

config/routes.rb

root to: "home#index"

を2行目に追記

次に
実際のControllerやViewがないため作成

rails g controller Home index show

次に
app/views/layouts/application.html.erb

deviseはログインやログアウトなどのときに、flashにサクセスやエラーメッセージを追加するので、その表示領域を追加

<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>

次にdeviseのモデルを作成

rails g devise User

とりあえずデフォルトでマイグレード

rake db:migrate

そして
・ログインしていない場合は、「サインイン」と「ログイン」のリンク
・ログインしている場合は、「プロフィール変更」と「ログアウト」のリンク
を追記するため
app/views/layouts/application.html.erb
へ追記

<header>
  <nav>
    <!-- user_signed_in? はユーザがログインしているか調べるdeviseのHelperメソッド -->
    <% if user_signed_in? %> 
      <!-- current_user は現在ログインしているUserオブジェクトを返すdeviseのHelperメソッド -->
      <!-- *_path はUserモデルを作成したときに、
        deviseにより自動で作成されてますので、rake routesで確認できます -->
      Logged in as <strong><%= current_user.email %></strong>.
      <%= link_to 'プロフィール変更', edit_user_registration_path %> |
      <%= link_to "ログアウト", destroy_user_session_path, method: :delete %>
    <% else %>
      <%= link_to "サインイン", new_user_registration_path %> |
      <%= link_to "ログイン", new_user_session_path %>
    <% end %>
  </nav>
</header>

を追記する

これで

rails s

でアプリを起動してログインできればOK

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です