Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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 如何将此ActiveRecord查询转换为命名范围?_Ruby On Rails_Activerecord_Ruby On Rails 3.1_Named Scope - Fatal编程技术网

Ruby on rails 如何将此ActiveRecord查询转换为命名范围?

Ruby on rails 如何将此ActiveRecord查询转换为命名范围?,ruby-on-rails,activerecord,ruby-on-rails-3.1,named-scope,Ruby On Rails,Activerecord,Ruby On Rails 3.1,Named Scope,我正在尝试在我的应用程序上实现一个趋势功能。我有一个名为Search的表,它有一个关键字列。每次用户使用搜索功能时,关键字都作为行存储在表中。我所做的是在过去4个小时内完成搜索,按关键字分组,将搜索限制为6个关键字,并根据关键字出现的次数进行排列。目前,我正在控制器上使用以下查询: Search.where('created_at >= ?', 4.hours.ago).group(:keyword).order('count_keyword DESC').limit(6).count(:

我正在尝试在我的应用程序上实现一个趋势功能。我有一个名为
Search
的表,它有一个
关键字列。每次用户使用搜索功能时,关键字都作为行存储在表中。我所做的是在过去4个小时内完成搜索,按关键字分组,将搜索限制为6个关键字,并根据关键字出现的次数进行排列。目前,我正在控制器上使用以下查询:

Search.where('created_at >= ?', 4.hours.ago).group(:keyword).order('count_keyword DESC').limit(6).count(:keyword)
我尝试将同一查询转换为命名范围,结果如下:

scope :trending, lambda { where('created_at >= ?', 4.hours.ago).group(:keyword).order('count_keyword DESC').limit(6).count(:keyword) }
这里的问题是我得到了这个错误:

ArgumentError:未知键:搜索关键字


我对命名作用域不太了解,阅读API也没什么帮助,因为它们只提供了非常简单的示例。有人能给我指出正确的方向吗?

作用域应该是可链接的,在你的情况下,既然你做了顺序+限制+计数,我就不会使用作用域,而是使用类方法。你如何调用你的作用域?@apheading-oh。是的,我想这更有道理。谢谢