我有一个称为has_many :likes
的网站的模型,当然还有另一个名为belongs_to :website
的likes的模型。我想得到所有网站的阵列,但按喜欢的网站数量排序。
有用的信息:
我已经设置好了,所以@website.likes
将返回@website
的赞。 (@website.likes.count
是网站获得的点赞次数)
最佳答案
正如其他人发布的那样,您可以加入likes
,然后按计数排序。根据索引等的不同,性能可能会有些差。根据运行的是Rails 2还是3,语法会略有不同。
一种替代方法是在likes_count
上保留非规范化的websites
列,该列在保存Like
模型对象时更新。
然后,您只需要查询Website
并指定likes_count
降序(且易于索引)的顺序即可。
为此,请在likes_count
上创建一个websites
整数列,并在:counter_cache
模型中的belongs_to
声明上指定Likes
选项。例如:
class Likes
belongs_to :website, :counter_cache => true
end
查看http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html了解更多信息
关于ruby-on-rails - (点击率)在网站上按喜欢次数排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6181272/