アソシエーションが存在する場合はアソシエーションフィールドで並べ替え、それ以外の場合はオブジェクト自体の属性で並べ替えるActiveRecordクエリを作成することはできますか?
例:Discussion
オブジェクトがありますhas_many :comments
。でソートされたディスカッションのリストを表示したいと思いdiscussion.latest_comment.created_at
ます。ただし、一部のディスカッションにはコメントがない場合があります。その場合は、discussion.created_at
代わりにそれらの属性を使用します。
キャッチは、結果がActiveRecord::Relation
(パフォーマンス上の理由と、Kaminari [Relationオブジェクトが必要]を使用しているため)である必要があるということです。
私が考えることができる唯一のことは、実際に新しいフィールドを作成することです。このフィールドdiscussion.latest_comment_at
には、最初に入力されdiscussion.created_at
、新しいコメントが投稿されるたびに更新されます。ただし、これはメンテナンスの観点からはそれほど単純ではないようです(たとえば、コメントが削除されるとどうなりますか?)。