Ruby on rails Rails充当可供选择的gem排序
我在Rails框架中创建了一个新框架。我使用了Ruby on rails Rails充当可供选择的gem排序,ruby-on-rails,ruby,sorting,ruby-on-rails-4,Ruby On Rails,Ruby,Sorting,Ruby On Rails 4,我在Rails框架中创建了一个新框架。我使用了act\u\u votablegem和will\u paginategem。当我想通过upvote订购articles但它不起作用时。我使用acts_as_votable的get_likes方法来处理订单,但失败了。我真的卡住了 文章范本: default_scope { order(get_likes: :desc) } 之后,我获取Statementİnvalid error您的get_likes-方法将不适用于订单范围,因为排序顺序是在数据
act\u\u votable
gem和will\u paginate
gem。当我想通过upvote
订购articles
但它不起作用时。我使用acts_as_votable的get_likes
方法来处理订单,但失败了。我真的卡住了
文章范本:
default_scope { order(get_likes: :desc) }
之后,我获取
Statementİnvalid error
您的get_likes
-方法将不适用于订单范围,因为排序顺序是在数据库上执行的,并且数据库不知道您的方法的数据
您可以使用数组方法在ruby中对记录进行排序,但这太慢了,应该在数据库级别执行此操作
通过使用计数器缓存,可以在数据库中排序,计数器缓存将记录的计数存储在列中。代步创业板已经推出了
您只需要将所需列的迁移添加到数据库中。这里是他们文档中的coulmn:
add_column :posts, :cached_votes_total, :integer, :default => 0
之后,您可以使用订单范围进行排序
Post.order(:cached_votes_total=> :desc)
您的
get\u likes
-方法将不适用于订单范围,因为排序顺序是在数据库上执行的,并且数据库不知道您的方法的数据
您可以使用数组方法在ruby中对记录进行排序,但这太慢了,应该在数据库级别执行此操作
通过使用计数器缓存,可以在数据库中排序,计数器缓存将记录的计数存储在列中。代步创业板已经推出了
您只需要将所需列的迁移添加到数据库中。这里是他们文档中的coulmn:
add_column :posts, :cached_votes_total, :integer, :default => 0
之后,您可以使用订单范围进行排序
Post.order(:cached_votes_total=> :desc)
get_likes是一种方法,不能在您尝试时使用,因为它被视为该表中的一列让我为您编写get_likes是一种方法,不能在您尝试时使用,因为它被视为该表中的一列让我为您编写