我有一个称为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/

10-13 07:08