めちゃめちゃ変なところで詰まったのでメモ

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

こいつがめちゃいい働きをしてくれる、なのでそれを今から教えよう

やろうとした事

devise gemを使ってログイン機能をつける

便利な機能は積極的に使っていこう!って感じ

引っかかったエラー

nameカラムの値が取れない

これのせいで変なところに時間をかけてしまった。deviseだから全部完璧にやってくれていると思っていた。。。

解決方法

devise gem を入れた時はこれを使おう(application_controller.rb)

before_action :configure_permitted_parameters, if: :devise_controller?

def configure_permitted_parameters ここはなんでも良い    devise_parameter_sanitizer.permit(:sign_up, keys: [:name])   end

ここでやっていることはsign upする時にnameカラムを追加するよという処理を書き加えた。

この記述をbefore_actionで処理する事で最初の段階で読み込む事ができる。

before_action :configure_permitted_parameters, if: :devise_controller?

こんな感じで読み込み。ifの部分は簡単に言うとdevise関係のところにいますか?みたいなチェックをしているところと思ってもらえれば良いです。

それでも値が入らない!って人

データベースにnameカラムがあるかどうかしっかり確認しましょう

データベースにカラムがないのではできるはずありませんね。

nameカラムを追加する方法、その1(ロールバック)

rake db:rollback をしてマイグレーションファイルをupからdownに変更(ターミナル)

upとdownの状態は

rake db:migrate:statusで確認できる

その後 t.string :name, null: false, default: "" をusersのマイグレーションファイルに記述

rake db:migrateを実行してデータベースに反映、確認と言う流れ

nameカラムを追加する方法、その2(マイグレーションファイルを作る)

rails g migration マイグレーションファイル名 カラム名:型(ターミナル)
今回だったらこんな感じ 
rails g migration add_name_to_user name:string
こんな感じの新しいマイグレーションファイルが出来た

class AddNameToUser < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :name, :string
  end
end

ファイルを確認したら

rake db:migrateを実行して、データベースを確認

こんな感じでカラムを用意してあげよう