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.

[Ruby on Rails] devise導入後の Mysql エラー

Posted at

自身の備忘録を書いて行きます。

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の時しか使ったことないけど...)

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?