繁体   English   中英

Rails act_as_votable宝石排序

[英]Rails acts_as_votable gem ordering

我是Rails框架的新手。 我使用acts_as_votable gem和will_paginate gem。 当我想通过upvote order articles但不起作用时。 我使用acts_as_votable的get_likes方法进行订购,但失败了。 我真的被卡住了。

文章模型:

default_scope  { order(get_likes: :desc) }

之后,我得到Statementİnvalid error

您的get_likes方法将不适用于订单范围,因为排序顺序是在数据库上执行的,并且数据库中未知您方法的数据。

您可以使用数组方法对红宝石中的记录进行排序,但这很慢,并且此操作应在数据库级别完成。

通过使用将一列记录的计数数量存储在列中的计数器缓存,您可以在数据库中进行排序。 actions_as_votable gem已经提供了反缓存实现

您只需要将所需列的迁移添加到数据库即可。 这是他们文档中的内容:

add_column :posts, :cached_votes_total, :integer, :default => 0

之后,您可以对订单范围进行排序。

Post.order(:cached_votes_total=> :desc)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM