見出し画像

devise を導入②

deviseを導入 の続き。

前回、以下のコマンドで作成したマイグレーションファイルには名前などのカラムがないため、任意のカラムを追加する。

rails generate devise MODEL

以下のコマンドを実行してマイグレーションファイルを作成。

rails generate migration AddColumnsToUser

作成されたマイグレーションファイルを以下のように修正。カラム名は適宜追加したい名前に変更する。not null制約をつけるかつけないかも任意。

  def change
    add_column :users, :first_name, :string, null: false
    add_column :users, :last_name, :string, null: false
  end

以下のコマンドを実行。

rails db:migrate

すでにデータを作成している場合は以下のコマンドを実行する。

rails db:migrate:reset

登録時に氏名も登録させたいため、カスタム用のviewを作成する。以下のコマンドを実行。

rails generate devise:views

作成された views/devise/registrations/new.html.erb ファイルを修正する。今回は first_name と last_name を追加したので以下のように修正。

<h2>Sign up</h2>

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <%= render "devise/shared/error_messages", resource: resource %>


  <div class="field">
    <%= f.label :first_name %><br />
    <%= f.text_field :first_name, autofocus: true, autocomplete: "first-name" %>
  </div>

  <div class="field">
    <%= f.label :last_name %><br />
    <%= f.text_field :last_name, autofocus: true, autocomplete: "last-name" %>
  </div>

  ...

  <div class="actions">
    <%= f.submit "Sign up" %>
  </div>
<% end %>

<%= render "devise/shared/links" %>

first_name と last_name が表示されていれば成功。


このままでは登録に失敗してしまう。なぜなら、deviseは任意で追加したカラムをストロングパラメータで許容していないからである。
氏名のカラムを追加したため、ストロングパラメータを修正し、任意のパラメータを許容する。application_controller.rb に以下を追加する。

before_action :configure_permitted_parameters, if: :devise_controller?

protected

def configure_permitted_parameters
  devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name, :last_name])
end

以下のように値を入力し、Sign up のボタンを押す。

任意のページにリダイレクトされたら成功。
に続く。


この記事が気に入ったらサポートをしてみませんか?