Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails充当可供选择的gem排序_Ruby On Rails_Ruby_Sorting_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails充当可供选择的gem排序

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-方法将不适用于订单范围,因为排序顺序是在数据

我在Rails框架中创建了一个新框架。我使用了
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是一种方法,不能在您尝试时使用,因为它被视为该表中的一列让我为您编写