[英]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.