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。是的,我想这更有道理。谢谢