自身の備忘録を書いて行きます。
deviseのgemを導入後エラーが出てきました。
##原因
まず、devise専用のストロングパラメータを記述していなかった事。
こちらの記述です。
application_controller.rb
before_action :configure_permitted_parameters, if: :devise_controller?
private
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
end
end
Railsでは、悪意のあるユーザーの入力に対してセキュリティ対策を行わないと保存できない仕組みがあります。
通常のテーブルに保存する際はストロングパラメータを使用しましたが、deviseを使ったモデルの場合は方法が異なります。
ここで使われている、
devise_parameter_sanitizerメソッドと言うのは
「特定のカラムを許容する」メソッドです。
##もう一つの原因
migrate/1111111_devise_create_users.rb
def change
create_table :users do |t|
## Database authenticatable
t.string :nickname, null: false
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
マイグレーションのファイルのnicknameカラムに
default制約がなかったのが原因だった。
絶絶対つける必要があるわけでもないが、
状況を見ながらつけた方が良さそう。(deviseの時しか使ったことないけど...)