前提・実現したいこと
LINE bot(Messaging API)において、データベースからデータを取り出してリプライできるようにしたいです。
発生している問題・エラーメッセージ
linebot controllerのアクションによってデータベースからデータを取ってこようとすると、以下のようなエラーが出ます。
Completed 500 Internal Server Error in 5ms (ActiveRecord: 1.9ms) ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "posts" does not exist
次のコマンドで作成したセットを使っており、psqlでpostsテーブルが存在することは確認済みなのですが、どうしても存在しないと言われてしまいます。
$ rails g scaffold post content:text posted_at:timestamp
該当のソースコード
以下のページのcontrollers/linebot_controller.rbをほぼ丸パクして使っています。
https://qiita.com/sakakinn/items/e771f3d7732f6bb655d3
logによると、エラーが出るのは、linebot_controller.rb中の
@post=Post.offset( rand(Post.count) ).first
の行で、Postによりpostsテーブルを参照しようとして失敗しているものと思われます。
追記
postモデルは特に何もしていませんので以下のままです。
class Post < ApplicationRecord end
postsテーブルを作るmigrationは以下のようになっています。
class CreatePosts < ActiveRecord::Migration[5.2] def change create_table :posts do |t| t.string :name t.timestamps end end end
試したこと
・テーブルが存在すること、テーブル名に大文字小文字が混在しないこと、search_pathが通っていること(今回はpublic)は確認しました。
・同じproduction環境でも、ngrokを使ったローカル環境では正常に動くのに、ローカルでない環境(webhook URLに"herokuapp.com"が含まれる)だと前述のエラーが出てしまいます。
・ローカルでない環境でも、データベースを用いなければちゃんとリプライできます。
補足情報(FW/ツールのバージョンなど)
Rails 5を使用しています。
回答1件
あなたの回答
tips
プレビュー