Преобразование приложения Rails 2 в Rails 3, мне нужно заменить драгоценный камень 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. В MetaSearch, предшественнике Ransack, существует функция, называемая search_methods
для использования областей. Ransack не поддерживает эту из коробки.