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.

deviseでログインする際の項目を追加する

Posted at

【開発環境】
macOS Catalina
バージョン 10.15.3
ruby 2.5.1
Rails 5.2.4.2
visual studio code
#deviseでログインする際の項目を追加する
deviseでログイン機能を作ると本来はメールアドレス、パスワードだけですが、他の項目のカラムを追加する方法です。

##作成したいカラムを追加
今回は例としてcompanyというカラムを追加します。

$ rails g migration AddColumnToUsers company

作成されたマイグレーションファイルを見てみます。
デフォルト値の設定をしないとエラーになるそうなので記載します。

作成日時_add_company_to_users.rb
class AddCompanyToUsers < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :company, :string, null: false, default: ''
  end
end

記述が終わったらDBに反映させます。

$ rails db:migrate

##ビューにフォームを追加する
作成したカラムに値を入力できるようにフォームを追加します。
deviseのビューを作っていない場合は作ります。

$ rails g devise:views
registrations/new.html.erb

ここを追加 ---------------------------------
  <div class="field">
    <%= f.label :病院名、会社名を入力してください %><br />
    <%= f.text_field :company, autofocus: true, class: "new_inform"%>
  </div>
---------------------------------
  <div class="field">
    <%= f.label :メールアドレスを入力してください %><br />
    <%= f.email_field :email, autofocus: true, autocomplete: "email", class: "new_inform" %>
  </div>

  <div class="field">
    <%= f.label :パスワードを入力してください %>
    <% if @minimum_password_length %>
    <em>(<%= @minimum_password_length %> 文字)</em>
    <% end %><br />
    <%= f.password_field :password, autocomplete: "new-password", class: "new_inform" %>
  </div>

  <div class="field">
    <%= f.label :パスワードをもう一度入力してください %><br />
    <%= f.password_field :password_confirmation, autocomplete: "new-password", class: "new_inform" %>
  </div>

  <div class="actions">
    <%= f.submit "登録する", class: "new_submit" %>
  </div>
<% end %>

##追加したカラムをDBへ反映
ストロングパラメーターの設定でconfigure_permitted_parametersメソッドを使用します。

devise\app\controllers\application_controller.rb
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

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

これでDBに反映することができます。

間違いなどがありましたらご指摘いただければ幸いです。
最後までご覧いただきありがとうございました。

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?