2011-12-29 105 views
-1

我必须为has_and_belongs_to_many关联的模型命名附件和用户。现在我必须找到所有附件的排序方式,以便首先显示具有关联性的附件,然后显示不具有关联性的附件。我怎样才能做到这一点?根据habtm关联对模型中的元素进行排序

+0

重说出你的问题。目前还不清楚你想要什么。 – 2011-12-29 08:05:48

回答

0

一个简单且相对高效的方法是将counter cache添加到Attachment模型中。计数器缓存将存储并保持您的attachments表中某列的关联数量,因此您可以执行Attachment.order('user_attachments_count DESC')

不幸的是,HABTM不支持计数器缓存,因此您必须在其他两个人之间弹出一个“中间人”模型才能访问连接表。

另一种方式(但性能差)是简单地使用:

@attachments = Attachment.includes(:users) 
@sorted  = @attachments.sort_by {|r| r.to_a.size }.reverse! 

好吧,如果它不适合,可以随时开始出汗了一个SQL查询...

相关问题