0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Railsでdeviseを使うときに設定すること【超初心者】

Last updated at Posted at 2021-02-20

自分用。練習用に作るときに設定することの備忘録。

目次

1.導入 2.ユーザーテーブルの作成 3.マイグレーションファイルの編集 4.コントローラへの記述追加 5.devise.rbの記述追加 6.ルートに記述追加 7.ログイン画面を編集する 8.ログアウト機能を作る 9.サインイン画面を編集する

1.導入

deviseをインストールするためGemfileにdeviseを記載
Gemfile
gem 'devise'

ターミナルにてインストール

tarminal
$ bundle install
$ rails g devise:install

2.ユーザーテーブルの作成

tarminal
$ rails g devise User

Userがモデル名

3.マイグレーションファイルの編集

追加することがあれば追加する。id,password,emailは標準装備。今回はname,age,gender,introduction,profile_image_idを追加する
db/migrate/202102~~01_devise_create_users.rb
()
# t.datetime :locked_at
      t.string :name
      t.integer :age
      t.integer :gender
      t.text :introduction
      t.string :profile_image_id #ここまで追加
      t.timestamps null: false
    end
()

そしたらターミナルでrails db:migrateを行う

4.コントローラへの記述追加

before_action :authenticate_user!はexceptで記述したものだけ通す。onlyは他で使うexcept効果(?)
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  before_action :authenticate_user!, only: [:top, :index, :show]
  before_action :configure_permitted_parameters, if: :devise_controller?

  def after_sign_in_path_for(resource)
    ログイン後に遷移させたい所_path
  end

  def after_sign_out_path_for(resource)
    ログアウト後に遷移させたい所_path
  end

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
  endend

5.devise.rbの記述追加

ログイン時に必要な項目を変えたい場合に変更。変更しなくても使える。
config/initializers/devise.rb
49行目ぐらい
  # You can also supply a hash where the value is a boolean determining whether
  # or not authentication should be aborted when the value is not present.
  # config.authentication_keys = [:email]

これをコメントアウトを外してemailを変える
  connfig.authentication_keys = [:name]

6.ルートに記述追加

順番に注意!順番を間違えるとエラーになったり無限に繰り返したりする。
config/routes.rb
  devise_for :users
  root to: 'homes#top'

7.ログイン画面を編集する

tarminal
$ rails g devise:views

出来たら勝手にできたログイン(サインイン)画面を編集

app/views/devise/registrations/new.html.erb
<%= form_with model: @user, url: user_session_path, local: true do |f| %> #変更

  <div class="field"> #追加
    <%= f.label :name %>
    <%= f.text_field :name, autofocus: true %>
  </div>
(略)

8.ログアウト機能を作る

置きたいところ.erb
  <body>
    <% if user_signed_in? %>
      <li>
        <%= link_to "ログアウト", destroy_user_session_path, method: :delete %>
      </li>
   #追加したいものを書く
    <% else %>
      <li>
        <%= link_to "新規登録", new_user_registration_path %>
      </li>
      <li>
        <%= link_to "ログイン", new_user_session_path %>
      </li>
   #追加したいものを書く
    <% end %> 
    <%= yield %>
  </body>

9.サインイン画面を編集する

合ってるか不安
app/views/devise/registrations/new.html.erb
<h2>Sign up</h2>

<%= form_with model: @user, url: user_registration_path, id: 'new_user', class: 'new_user', local: true do |f| %> #編集
  <%= render "devise/shared/error_messages", resource: resource %>

  <div class="field"> 
    <%= f.label :name %>
    <%= f.text_field :name, autofocus: true %>
  </div>
  <div class="field">
    <%= f.label :email %>
    <%= f.email_field :email, autofocus: true, autocomplete: "email" %>
  </div>
  <div class="field">
    <%= f.label :age %>
    <%= f.number_field :age, autofocus: true, min: 1, max: 100 %>
  </div>
  <div class="field">
    <%= f.label :gender %>
  <%= f.select :gender, [ ["男性",1], ["女性", 2], ["未選択", 3 ] , prompt: "性別を選択" %>
(略)

とりあえずこれで一通り。
記録をし忘れているところがあったら編集していく所存。
間違えていないか不安なので見直す。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?