includesしたモデルが持つレコードが存在しない場合の対処について
PublicActivityのgemを使ってるのですが、activitiesを取得する時にパフォーマンス改善のために出来るだけまとめてSQLで取ってくるようにしたいです。
PublicActivity::Activity.includes(trackable: [:post]).where(trackable_type: ['Like', 'Comment'])
そこで上記のようにtrackableとその先のpostまでincludesすることによってパフォーマンスは改善したのですが、post
レコードが存在しない時(削除した時など)に、
Association named 'post' was not found
というエラーが出ます。
joins
を使えば、存在するレコードだけ取ってくる、と聞いて使おうとすると今度は
Cannot eagerly load the polymorphic association
というエラーが出ます。
何か良い解決方法はありますでしょうか?
関連するモデルの情報が抜けておりました。追記致します。
Postモデル
Class Post < ActiveRecord::Base
has_many :comments
Commentモデル
Class Comment < ActiveRecord::Base
include PublicActivity::Common
belongs_to :post
has_many :likes
Likeモデル
Class Like < ActiveRecord::Base
include PublicActivity::Common
belongs_to :comment
となっています。