前提
bcryptを入れてパスワードをハッシュ化しようとしています。
ユーザーの新規登録ボタンを押した時に問題が起きます
ローカルでエラーは起きません。
本番環境で下記のエラーが起きます。
マイグレーションをかけてもデータベースのカラムのカラム名が変わらないのは何故なのでしょうか?
またこのようにマイグレーションがデータベースに反映されない場合はどこを見るのが良いでしょうか
$ heroku run rake db:migrate Running rake db:migrate on ⬢ firstkuzuno... up, run.8424 (Free) D, [2019-02-16T15:51:12.223673 #4] DEBUG -- : (0.8ms) SELECT pg_try_advisory_lock(7556455125640126755) D, [2019-02-16T15:51:12.250999 #4] DEBUG -- : (2.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC D, [2019-02-16T15:51:12.273476 #4] DEBUG -- : ActiveRecord::InternalMetadata Load (1.0ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = $1 LIMIT $2 [["key", "environment"], ["LIMIT", 1]] D, [2019-02-16T15:51:12.297343 #4] DEBUG -- : (2.0ms) BEGIN D, [2019-02-16T15:51:12.302973 #4] DEBUG -- : (4.1ms) COMMIT D, [2019-02-16T15:51:12.307083 #4] DEBUG -- : (3.7ms) SELECT pg_advisory_unlock(7556455125640126755)
発生している問題・エラーメッセージ
mysqlのデータベースではカラム名が「password_digest」
PostgreSQLのデータベースでは「password」
その状態で新規登録のアクション実行で(ボタンを押した時)
NoMethodError (undefined method `password_digest='
とエラーが出ます
ローカルと本番環境でパスワードのカラム名が違うのが原因だと思うのですが
heroku run rails db:migrate
は実行してあります
最低限の情報を入れたつもりですが足りない場合は指摘をお願いします
##「追記」他に怪しいと思っている部分
app/controllers/users_controller.rb:17:in `create'
ログの最後がここで500が帰ってきます
user = User.new(user_params)
17行目は上の1行でおそらくuser_paramsで受け取るものが悪いと思います。(ローカルでは成功しているため)
def user_params params.require(:user).permit(:nicename, :mail, :password, :password_digest) end
bcryptを導入するときに見た記事と同じ書き方なので問題がないと思います。というよりもローカルでは成功しているので、やはりデータベースだと思われますが。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/17 02:13
2019/02/17 02:20
2019/02/17 02:27
2019/02/17 03:06
2019/02/17 03:36
2019/02/17 05:33