ユーザー管理をする①:設定一覧

ユーザー管理をする①

Header9

0 : この章の目的

 「ユーザー管理をする①」の設定一覧の確認をする


1 : 設定一覧

ユーザー管理をする①」では、ユーザー管理のgem「devise」の導入とログイン機能の設定を行った。

ここで変更した内容をまとめる。
ユーザー管理のgem「devise」をインストールするために、Gemfileに設定を加えた。

 Gemfile

26 27 28 29 30 31 32 gem 'therubyracer' gem 'less-rails' gem 'twitter-bootstrap-rails' gem 'sprockets', '3.6.3' gem 'execjs' gem 'devise'

「Gemfile」への設定が終わったら、

 ターミナル
 Windowsをご利用でしたら、「コマンドプロンプト」をご利用下さい。

1 bundle install

で設定を適用させる。

設定を適用させたら、「devise」の3つの設定をする。
  • deviseの導入
  • deviseの「users」データベースの作成
  • deviseのページの設定

 deviseの導入は、

ターミナルで、

 ターミナル
 Windowsをご利用でしたら、「コマンドプロンプト」をご利用下さい。

1 rails g devise:install

を入力して行う。 Rails g devise install
 deviseの「users」データベースの作成は、

ターミナルで、

 ターミナル
 Windowsをご利用でしたら、「コマンドプロンプト」をご利用下さい。

1 rails g devise user

を入力して「users」データベースの設定ファイルdb > migrate > 日時_devise_create_users.rbを作成する。 Rails g devise user 作成された「users」データベースの内容は下のように変更した。

 日時_devise_create_users.rb(33〜35行目を追加)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 class DeviseCreateUsers < ActiveRecord::Migration def change create_table(:users) do |t| ## Database authenticatable t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: "" ## Recoverable t.string :reset_password_token t.datetime :reset_password_sent_at ## Rememberable t.datetime :remember_created_at ## Trackable t.integer :sign_in_count, default: 0, null: false t.datetime :current_sign_in_at t.datetime :last_sign_in_at t.string :current_sign_in_ip t.string :last_sign_in_ip ## Confirmable # t.string :confirmation_token # t.datetime :confirmed_at # t.datetime :confirmation_sent_at # t.string :unconfirmed_email # Only if using reconfirmable ## Lockable # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts # t.string :unlock_token # Only if unlock strategy is :email or :both # t.datetime :locked_at t.string :first_name t.string :family_name t.text :self_introduction t.timestamps null: false end add_index :users, :email, unique: true add_index :users, :reset_password_token, unique: true # add_index :users, :confirmation_token, unique: true # add_index :users, :unlock_token, unique: true end end

終わったら

 ターミナル
1 rake db:migrate

でデータベースの設定を適用させる。
 deviseのページの設定は、

ターミナルで、

 ターミナル
 Windowsをご利用でしたら、「コマンドプロンプト」をご利用下さい。

1 rails g devise:views

を入力して、app > views > devise」フォルダにある表示設定ファイルに内容を設定する。 Rails g devise views 登録ページ(0.0.0.0:3000/users/sign_up)は、

 new.html.erb(registrationsフォルダ)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 <h2>Sign up</h2> <%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> <%= devise_error_messages! %> <div class="field"> <%= f.label :email %><br /> <%= f.email_field :email, autofocus: true, :class => "form-control my-form" %> </div> <div class="field"> <%= f.label :password %> <% if @minimum_password_length %> <em>(<%= @minimum_password_length %> characters minimum)</em> <% end %><br /> <%= f.password_field :password, autocomplete: "off", :class => "form-control my-form" %> </div> <div class="field"> <%= f.label :password_confirmation %><br /> <%= f.password_field :password_confirmation, autocomplete: "off", :class => "form-control my-form" %> </div> <br> <div class="actions"> <%= f.submit "Sign up", :class => "btn btn-primary" %> </div> <% end %> <%= render "devise/shared/links" %>

ログインページ(0.0.0.0:3000/users/sign_in)は、

 new.html.erb(sessionsフォルダ)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <h2>Log in</h2> <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %> <div class="field"> <%= f.label :email %><br /> <%= f.email_field :email, autofocus: true, :class => "form-control my-form" %> </div> <div class="field"> <%= f.label :password %><br /> <%= f.password_field :password, autocomplete: "off", :class => "form-control my-form" %> </div> <% if devise_mapping.rememberable? -%> <div class="field"> <%= f.check_box :remember_me %> <%= f.label :remember_me %> </div> <% end -%> <br> <div class="actions"> <%= f.submit "Log in", :class => "btn btn-primary" %> </div> <% end %> <%= render "devise/shared/links" %>

 navigation-barとログインの通知も設定しました。

 application.html.erb

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 <!DOCTYPE html> <html> <head> <title>Myapp</title> <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> <%= csrf_meta_tags %> </head> <body> <nav id="mainNav" class="navbar navbar-default navbar-fixed-top"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a href="/posts" class="navbar-brand">myapp</a> </div> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav navbar-right"> <li><a href="/users/sign_up">登録する</a></li> <li><a href="/users/sign_in">ログインする</a></li> <li><a href="/posts/new">新しく投稿する</a></li> </ul> </div> </div> </nav> <div class="container main-page"> <% if notice %> <br> <p class="alert alert-success"><%= notice %></p> <% end %> <% if alert %> <br> <p class="alert alert-danger"><%= alert %></p> <% end %> <%= yield %> </div> </body> </html>

 最後に「posts_controller.rb」でログインの制限の設定をしました。

 posts_controller.rb

1 2 3 4 5 6 7 8 9 10 class PostsController < ApplicationController before_action :authenticate_user!, :only => [:new, :create, :edit, :update, :destroy] def show @post = Post.find(params[:id]) end def index #以下省略

になる