1
1

More than 3 years have passed since last update.

docker-composeでDeviseを導入

Posted at

Device
ログイン機能やユーザー登録機能をとても簡単に実装することができるgem。

参考にした記事
https://qiita.com/Orangina1050/items/a16e655519a60f35b394

下準備
コントローラーの作成 ついでにアクションとビューを作成する

terminal
$ docker-compose run web bin/rails g controller comments index 

導入編
Gemfileに、deviseを追加する。

terminal
$ docker-compose run web bundle install #deviseをインストールする
$ docker-compose build #構築する。

終わったら、 deviseの設定ファイルを作成する

terminal
$ docker-compose run web bin/rails g devise:install

ログイン機能用のモデル作成を行い(1)、を行いマイグレーション(2)
その後、ログイン機能に必要なビューファイルをまとめて作成(3)

terminal
$ docker-compose run web bin/rails g devise user #・・・(1)
$ docker-compose run web rake db:migrate #・・・(2)
$ docker-compose run web bin/rails g devise:views  #・・・(3)

views/comments/index.html.erbを編集し、下記を加える

index.html.erb
  <div class="field">
    <%= f.label :name %> <br />
    <%= f.text_field :name %>
  </div>

ちなみに、私はここで、
NoMethodError in Devise::Sessions#new
エラーが発生した。

一度、コンテナを止めて(1)、削除し(2)、再度コンテナを構築したら(3)、解決した。
(理由をわかっていないので宿題ですね)

terminal
$ docker ps -a
$ docker stop (コンテナ名) #・・・(1)
$ docker rm (コンテナ名) #・・・(2)
$ docker-compose build #・・・(3)

新規登録時に名前を入力できるようにする
usersテーブルにnameカラムをstring型で追加するマイグレーションファイルを作成

terminal
$ docker-compose run web bin/rails g migration AddNameToUsers name:string $ rake db:migrate

ここでもまた、エラーが発生する場合は、再起動すると直る場合あり!

DBに名前を格納できるように変更する
deviseは初期の状態では、strong parameterが新規登録時のメールアドレスとパスワードのみ受け取るように設定されている。
しかし、deviseのstrong parameterはgem内のため、いじることができない。
なので、deviseが提供しているconfigure_permitted_parametersメソッドを利用する

configure_permitterd_parametersとは・・・

deviseのstrong parameterを追加することができるメソッド
application_controllerに記述する

controllers/application_controller.erb

  before_action :configure_permitted_parameters, if: :devise_controller?
  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) # 新規登録時(sign_up時)にnameというキーのパラメーターを追加で許可する
  end
1
1
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
1
1