Webサービスの作り方を実例のRailsで【ログイン認証・devise】part1

  • 2015/9/2
  • Webサービスの作り方を実例のRailsで【ログイン認証・devise】part1 はコメントを受け付けていません。

会員ユーザーの登路機能を実装していきたいと思います。
Railsのdeviseという機能を使って実装を行います。


1.deviseをGemfileに追加

gem 'devise'

$ bundle install


2.Railsプロジェクトにdevise関連ファイルを追加

$ rails generate devise:install
 

このコマンドにより、5つの初期設定に関するメッセージが表示。

・メール送信時のホスト名を指定(今回は抜粋)
・rootのURL指定(設定済み)
・flashメッセージの表示領域(後に設置します。)
・Rails3.2だけ必要なのでスキップ
・Viewのカスタマイズ

今回はViewをカスタマイズしたいと思いますので、コマンドを使います。

$ rails g devise:views

ご紹介するのはBootstrapによるflashメッセージの装飾です。
app/helpers/application_helper.rb

module ApplicationHelper
    def bootstrap_class_for(flash_type)
        case flash_type
            when :success
            "alert-success"
            when :error
            "alert-danger"
            when :alert
            "alert-warning"
            when :notice
            "alert-info"
            else
            flash_type.to_s
        end
    end
end

flashメッセージを全体にわたって表示
app/views/layouts/application.html.erb

<!DOCTYPE html>
<html>
<head>
  <title>BasicWebsite</title>
  <meta name="viewport" content="width=device-width,user-scalable=no,maximum-scale=1" />
  <%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>
  <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= render 'shared/navbar' %>
<% flash.each do |key, value| %>
<div class="alert <%= bootstrap_class_for(key) %>"><%= value %></div>
<% end %>
<%= yield %>
</body>
</html>


3.deviseでユーザーモデルを作成

$ rails g devise user

$ rake db:migrate

nameとemailという2つの情報をもったユーザーモデルを作成しているので
nameという情報を追加するためのマイグレーションを作成

$ rails generate migration add_name_to_users name:string

$ rake db:migrate


4.入力値の値を設定するユーザー検証を行う

app/models/user.rb

validates :name,  presence: true, length: { maximum: 50 }

を挿入する。


5.ユーザーの情報を表示するページを作成

$ rails generate controller Users show

config/routes.rb

  devise_for  :users
  resources :users, only: [:show]
  root 'pages#home'

app/controllers/users_controller.rb

class UsersController < ApplicationController

  def show
    @user = User.find(params[:id])
  end
end

ユーザー情報を表示するview
app/views/users/show.html.erb

<% provide(:title, @user.name) %>
<div class="row">
  <aside class="col-md-4">
    <section>
      <h1>
        <%= @user.name %>
      </h1>
    </section>
  </aside>
</div>

ここまでで、実際にページ作成が行われているか確認

$ rake db:migrate RAILS_ENV=production

$ bundle exec rake assets:precompile RAILS_ENV=production

$ sudo service httpd restart

http://*****/users/sign_up
(*****)はお使いの独自ドメイン。

スクリーンショット 2015-08-31 18.59.21

次回はこちらをCSSで装飾するところから始めます。

バックナンバー
Webサービスの作り方をRailsでイチから学ぶ【レイアウト作成】part1
Webサービスの作り方をRailsでイチから学ぶ【レイアウト作成】part2

  • このエントリーをはてなブックマークに追加

関連記事

コメントは利用できません。

ピックアップ記事

  1. 第3回目ではボタンを押すとyoutubeの動画がランダム表示されるものを作成しました。今度はランダム…
  2. ワードプレスでオリジナルテーマを作ってみたい! 全くのイチからの作成手順をご紹介していきたいと思い…

ピックアップ記事

  1. 独学でプログラミング学習に挑戦したは良いが、結局挫折を繰り返す日々。   そんな挫折経験者や…
  2. ネットで調べると実に様々な方法が出てきます。 サーバーによっても様々なアプローチが。 今回私…
  3. 1.さくらVPSにPHP、MySQL、Ruby on Railsを設置。 これらを設置するまで…
  4. 他人様のコンテンツを引っ張ってきて、 自分なりにアレンジを加えた形で 独自のコンテンツとして提供…
ページ上部へ戻る