プロダクション Rails 4.2 アプリでは、Events#show ページが呼び出されるたびに次のログ エラーが表示されます。
PG::UndefinedTable: ERROR: missing FROM-clause entry for table "actions" SELECT "merit_actions".* FROM "merit_actions" WHERE (actions.trackable_type = 'Comment' AND actions.trackable_id in (NULL))
なぜ/どのようにこのクエリが作成されているのかを理解し、問題をデバッグするのに問題があります。
このクエリは、このRailscastに大まかに基づいて、アクティビティ フィードを構築する必要があります。Event モデルには、多態的な Actionable 関連付けがあり、これを介して多くのコメントと写真が関連付けられます。
イベントモデルには次のメソッドがあります
def action_feed
fetch_comments = Action.where( 'actions.trackable_type = ? AND actions.trackable_id in (?)', "Comment", self.comments.map(&:id) )
fetch_photos = Action.where( 'actions.trackable_type = ? AND actions.trackable_id in (?)', "Photo", self.leadings.map(&:id) )
merged_actions = fetch_comments | fetch_photos
sorted_actions = merged_actions.sort_by{ |a| a[:created_at] }.reverse
paginated_actions = Kaminari.paginate_array( sorted_actions )
end
ご覧のとおり、アクション モデルが参照さmerit_actions
れていますが、クエリで問題を引き起こしている参照はありません。
Merit gemをインストールしました
class User
has_merit
end
ただし、Event モデルではありません。
このクエリが を参照merit_actions
している理由と、これをデバッグするにはどうすればよいですか? それは私には意味がありません。