質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Q&A

解決済

1回答

797閲覧

本番環境でcounter_casheエラー

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

0グッド

0クリップ

投稿2019/04/08 01:46

前提・実現したいこと

rails歴3ヶ月の初心者です。自作アプリを作成中です。
コメントにいいね機能を実装しました。
いいねボタンを押すと非同期でいいねがついたり消えたりします。
現状ローカル環境であればいいねボタンを押す度にcounter_casheの値が更新されていくのですが、
本番環境だとrollbackされてしまいます。

試したこと

データベースリセットしてもう再度マイグレート
本番環境のcommentsテーブルをcsvに抽出してみましたが、
likes_countカラムが追加されていませんでした。

発生している問題・エラーメッセージ

モデル、ログ、schema.rbは下記の通りです。

#Likeモデル class Like < ApplicationRecord belongs_to :comment, counter_cache: :likes_count belongs_to :user end #Commentモデル class Comment < ApplicationRecord belongs_to :court belongs_to :user has_many :likes, dependent: :destroy has_many :liking_users, through: :likes, source: :user end
#本番環境ログ 2019-04-08T00:35:55.968795+00:00 heroku[router]: at=info method=POST path="/like/1" host=search-court-app.herokuapp.com request_id=84e9d741-a31d-454c-bfbe-4cdb507b2a2f fwd="219.107.8.69" dyno=web.1 connect=1ms service=19ms status=500 bytes=1827 protocol=https 2019-04-08T00:35:55.948704+00:00 app[web.1]: I, [2019-04-08T00:35:55.948594 #4] INFO -- : [84e9d741-a31d-454c-bfbe-4cdb507b2a2f] Started POST "/like/1" for 219.107.8.69 at 2019-04-08 00:35:55 +0000 2019-04-08T00:35:55.949633+00:00 app[web.1]: I, [2019-04-08T00:35:55.949532 #4] INFO -- : [84e9d741-a31d-454c-bfbe-4cdb507b2a2f] Processing by LikesController#like as JS 2019-04-08T00:35:55.949699+00:00 app[web.1]: I, [2019-04-08T00:35:55.949641 #4] INFO -- : [84e9d741-a31d-454c-bfbe-4cdb507b2a2f] Parameters: {"comment_id"=>"1"} 2019-04-08T00:35:55.953196+00:00 app[web.1]: D, [2019-04-08T00:35:55.953103 #4] DEBUG -- : [84e9d741-a31d-454c-bfbe-4cdb507b2a2f] Comment Load (1.2ms) SELECT "comments".* FROM "comments" WHERE "comments"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]] 2019-04-08T00:35:55.955527+00:00 app[web.1]: D, [2019-04-08T00:35:55.955456 #4] DEBUG -- : [84e9d741-a31d-454c-bfbe-4cdb507b2a2f] User Load (1.4ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 2], ["LIMIT", 1]] 2019-04-08T00:35:55.957760+00:00 app[web.1]: D, [2019-04-08T00:35:55.957675 #4] DEBUG -- : [84e9d741-a31d-454c-bfbe-4cdb507b2a2f] (1.0ms) BEGIN 2019-04-08T00:35:55.959851+00:00 app[web.1]: D, [2019-04-08T00:35:55.959765 #4] DEBUG -- : [84e9d741-a31d-454c-bfbe-4cdb507b2a2f] Comment Load (1.4ms) SELECT "comments".* FROM "comments" WHERE "comments"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]] 2019-04-08T00:35:55.962150+00:00 app[web.1]: D, [2019-04-08T00:35:55.962073 #4] DEBUG -- : [84e9d741-a31d-454c-bfbe-4cdb507b2a2f] Like Create (1.3ms) INSERT INTO "likes" ("user_id", "comment_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETURNING "id" [["user_id", 2], ["comment_id", 1], ["created_at", "2019-04-08 00:35:55.960206"], ["updated_at", "2019-04-08 00:35:55.960206"]] 2019-04-08T00:35:55.963641+00:00 app[web.1]: D, [2019-04-08T00:35:55.963512 #4] DEBUG -- : [84e9d741-a31d-454c-bfbe-4cdb507b2a2f] (1.0ms) ROLLBACK 2019-04-08T00:35:55.964146+00:00 app[web.1]: I, [2019-04-08T00:35:55.964078 #4] INFO -- : [84e9d741-a31d-454c-bfbe-4cdb507b2a2f] Completed 500 Internal Server Error in 14ms (ActiveRecord: 7.3ms) 2019-04-08T00:35:55.964992+00:00 app[web.1]: F, [2019-04-08T00:35:55.964918 #4] FATAL -- : [84e9d741-a31d-454c-bfbe-4cdb507b2a2f] 2019-04-08T00:35:55.965063+00:00 app[web.1]: F, [2019-04-08T00:35:55.964989 #4] FATAL -- : [84e9d741-a31d-454c-bfbe-4cdb507b2a2f] ActiveModel::MissingAttributeError (can't write unknown attribute `likes_count`): 2019-04-08T00:35:55.965118+00:00 app[web.1]: F, [2019-04-08T00:35:55.965057 #4] FATAL -- : [84e9d741-a31d-454c-bfbe-4cdb507b2a2f] 2019-04-08T00:35:55.965175+00:00 app[web.1]: F, [2019-04-08T00:35:55.965119 #4] FATAL -- : [84e9d741-a31d-454c-bfbe-4cdb507b2a2f] app/controllers/likes_controller.rb:6:in `like' #ローカル環境ログ Started POST "/like/22" for 127.0.0.1 at 2019-04-08 10:06:39 +0900 Processing by LikesController#like as JS Parameters: {"comment_id"=>"22"} Comment Load (0.3ms) SELECT `comments`.* FROM `comments` WHERE `comments`.`id` = 22 LIMIT 1 ↳ app/controllers/likes_controller.rb:17 User Load (0.4ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1 ↳ app/controllers/likes_controller.rb:5 (0.1ms) BEGIN ↳ app/controllers/likes_controller.rb:6 Comment Load (0.3ms) SELECT `comments`.* FROM `comments` WHERE `comments`.`id` = 22 LIMIT 1 ↳ app/controllers/likes_controller.rb:6 Like Create (0.3ms) INSERT INTO `likes` (`user_id`, `comment_id`, `created_at`, `updated_at`) VALUES (1, 22, '2019-04-08 01:06:39', '2019-04-08 01:06:39') ↳ app/controllers/likes_controller.rb:6 Comment Update All (0.3ms) UPDATE `comments` SET `likes_count` = COALESCE(`likes_count`, 0) + 1 WHERE `comments`.`id` = 22 ↳ app/controllers/likes_controller.rb:6 (4.0ms) COMMIT ↳ app/controllers/likes_controller.rb:6 Rendering likes/like.js.erb Like Load (0.3ms) SELECT `likes`.* FROM `likes` WHERE `likes`.`user_id` = 1 AND `likes`.`comment_id` = 22 LIMIT 1 ↳ app/views/likes/_like.html.erb:2 (0.2ms) SELECT COUNT(*) FROM `likes` WHERE `likes`.`comment_id` = 22 ↳ app/views/likes/_like.html.erb:4 Rendered likes/_like.html.erb (4.8ms) Rendered likes/like.js.erb (25.2ms) Completed 200 OK in 101ms (Views: 66.2ms | ActiveRecord: 6.2ms)
#schema.rb create_table "comments", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8", force: :cascade do |t| t.string "text" t.datetime "created_at", null: false t.datetime "updated_at", null: false t.integer "court_id" t.integer "user_id" t.integer "likes_count" end

回答よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/04/08 07:39

ローカルでは正常に動作しますか? 紐付けは正常に行えていますか?例えば comment.likesのような形でcommentに紐づくlikeの集合が取得できますか?
退会済みユーザー

退会済みユーザー

2019/04/08 08:24

はい。ローカルでは正常に動いています。 >comment.likesのような形でcommentに紐づくlikeの集合が取得できますか? 可能です。
退会済みユーザー

退会済みユーザー

2019/04/08 08:40

では本番環境ではDBのマイグレートは行われていますか?
退会済みユーザー

退会済みユーザー

2019/04/08 09:56

>では本番環境ではDBのマイグレートは行われていますか? はい。行いました。
退会済みユーザー

退会済みユーザー

2019/04/09 00:10

うーん、ではDBが壊れているのかもしれないですね... DBを再構築してバックアップをリストアすれば直るかもしれません。
退会済みユーザー

退会済みユーザー

2019/04/09 01:05

もう一度試してみます。 回答ありがとうございます。
退会済みユーザー

退会済みユーザー

2019/04/30 01:09

capistranoを利用しておりcurrentフォルダでdb削除→作成→マイグレートでカラム追加できました。 回答ありがとうございました。
guest

回答1

0

ベストアンサー

本番環境のDBをCSV化して確認したときにカラムがなったということは、テーブルにカラムがないので、DBをいくらリストアしても結果は変わらないように思えます。
あらためて、本番環境で bin/rails r -e production 'p Comment.column_names' としてカラムが入っているか確認してみてください。
入っていなければ migrate でカラムを追加してみてください。

投稿2019/04/21 08:39

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/04/30 01:09

capistranoを利用しておりcurrentフォルダでdb削除→作成→マイグレートでカラム追加できました。 回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問