【開発環境】
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に反映することができます。
間違いなどがありましたらご指摘いただければ幸いです。
最後までご覧いただきありがとうございました。