如何解决栏在网站上按喜欢的次数排序
|| 我有一个名为“ 0”的网站模型,当然还有另一个名为“ 1”的“喜欢”模型。我想获取所有网站的阵列,但按喜欢的网站数量排序。 有用的信息: 我已经设置好了,所以@website.likes
会从ѭ3return返回喜欢的人。 (@website.likes.count
是网站获得的点赞数)
我想获取所有网站的阵列,但按喜欢的网站数量排序。
解决方法
正如其他人所张贴的,您可以对
likes
进行联接,然后按计数进行排序。根据索引等的不同,性能可能会有些差。根据运行的是Rails 2还是3,语法会稍有不同。
一种替代方法是在websites
上保留非规范化的likes_count
列,该列在保存Like
模型对象时更新。
然后,您只需要查询Website
并指定顺序likes_count
降序即可(并且易于索引)。
为此,请在websites
上创建likes_count
整数列,并在Likes
模型中的belongs_to
声明中指定:counter_cache
选项。例如:
class Likes
belongs_to :website,:counter_cache => true
end
查看http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html了解更多信息
, 此查询应为您提供所需的信息:
all(:select => \'websites.*,count(*) as count\',:joins => :likes,:group => :websites,:order => \'count DESC\')
, 类似于以下内容:
SELECT Websites.*,COUNT(Like.ID) AS Liked
FROM websites
LEFT OUTER JOIN Like ON websites.ID = Like.website_id
GROUP BY Like.website_id ORDER BY Liked DESC
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。