アプリにトレンド機能を実装しようとしています。列を持つというテーブルSearch
がありkeyword
ます。ユーザーが検索機能を使用するたびに、キーワードは行としてテーブルに格納されます。私が行ったのは、過去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:不明なキー:thesearchkeyword
名前付きスコープについてはよくわかりません。APIを読んでも、非常に単純な例しか提供されていないため、あまり役に立ちません。誰かが私を正しい方向に向けることができますか?