Rails 2 アプリケーションを Rails 3 に変換するには、gem のsearchlogicを置き換える必要があります。今、Rails 3.2.8 と gem Ransackを使用して、既存のスコープを使用する検索フォームを作成したいと考えています。例:
class Post < ActiveRecord::Base
scope :year, lambda { |year|
where("posts.date BETWEEN '#{year}-01-01' AND '#{year}-12-31'")
}
end
私の知る限り、これはカスタムransackerを定義することで実現できます。残念ながら、これに関するドキュメントは見つかりません。Post
私はクラスでこれを試しました:
ransacker :year,
:formatter => proc {|v|
year(v)
}
しかし、これは機能しません:
Post.ransack(:year_eq => 2012).result.to_sql
=> TypeError: Cannot visit ActiveRecord::Relation
宣言のバリエーションをいくつか試しransacker
ましたが、どれも機能しません。助けが必要です...
更新:上記の範囲は単なる例です。Ransack 内のすべての既存のスコープを使用する方法を探しています。Ransack の前身である MetaSearch には、search_methods
スコープを使用するために呼び出される機能があります。Ransack は、これをそのままではまだサポートしていません。