Ruby on rails 使用ActiveRecord按关联字段排序

Ruby on rails 使用ActiveRecord按关联字段排序,ruby-on-rails,activerecord,associations,Ruby On Rails,Activerecord,Associations,是否可以编写ActiveRecord查询,如果存在关联,则按关联字段排序,否则按对象本身的属性排序 示例:我有一个讨论对象,它有很多:注释。我想显示按讨论排序的讨论列表。最新的\u评论。在创建的\u。但是,有些讨论可能没有任何注释,在这种情况下,我希望使用他们的讨论.created_at属性 关键是我需要结果是一个ActiveRecord::Relation(出于性能原因,也因为我们使用的是Kaminari[它需要一个Relation对象]) 我唯一能想到的就是实际创建一个新字段,如discus

是否可以编写ActiveRecord查询,如果存在关联,则按关联字段排序,否则按对象本身的属性排序

示例:我有一个
讨论
对象,它
有很多:注释
。我想显示按
讨论排序的讨论列表。最新的\u评论。在
创建的\u。但是,有些讨论可能没有任何注释,在这种情况下,我希望使用他们的
讨论.created_at
属性

关键是我需要结果是一个
ActiveRecord::Relation
(出于性能原因,也因为我们使用的是Kaminari[它需要一个Relation对象])


我唯一能想到的就是实际创建一个新字段,如
discussion.latest\u comment\u at
,最初由
discussion填充。在
创建,然后在每次发布新评论时更新。但是,从维护的角度来看,这似乎不是很直截了当(例如,删除评论时会发生什么?)

我不知道通过SQL实现这一点的方法,所以我作弊了,我有我的代码

这样,我就可以按
last\u post\u at
对主题进行排序,而不必同时查询两个表


我见过其他论坛系统也是这样做的,看起来你设计的正是一个类似论坛的系统。

我不知道如何通过SQL实现这一点,所以我作弊了,我有我的代码

这样,我就可以按
last\u post\u at
对主题进行排序,而不必同时查询两个表


我见过其他论坛系统也是这样做的,看起来你正在设计的正是一个类似论坛的系统。

你有没有试过只给你的协会打一个加入电话,然后先在加入的专栏上下订单,然后在本地列上进行排序?您是否尝试过只对您的关联进行一次联接调用,然后先对联接列调用排序,然后再对本地列进行排序?