何日目か考えるのが面倒なので単なる連番にする.
前回の作業週から取り組んでいたブロック機能のバグ修正の話. ブロックしたユーザが非表示にならず, 再度ブロックするとDBのユニーク制約に違反してエラーになるのが原因だった.
なのでブロック済みユーザのコメントは取得しないようにしようと試みる. 怖話では, 怖い話(Story), 怖い画像(Wallpaper), 怖い漫画(Comic)のそれぞれにコメントを付けることが出来(acts_as_commentable), ブロックは投稿したユーザからコメントしたユーザへの一方向になっている. また, 管理者以外のユーザがブロック済みユーザのコメントを見ることは無いはずなのでCommentクラスのdefault_scopeに
1 2 3 4 5 6 7 8 9 |
|
と書いた.
これで”ブロック済みユーザのコメントは取得しない”という目的は達成されるのだが, 今度はincludes(:commentable)
とするとActiveRecord::EagerLoadPolymorphicError - Can not eagerly load the polymorphic association :commentable
となってしまう.
回避する方法は分からなかったのだが, 現状includes(:commentable)
が必要になる箇所はトップページ(/), コメント一覧ページ(/comments), 怖い漫画のトップページ(/comics)であり, 特にトップページは表示回数が多いはずなのでRailsやその他のキャッシュで対処出来ないかな…という淡い期待でそのままにした.
何か他にいい方法無いかな…