Ransack: Jak korzystać z istniejącego zakresu?
Konwertując aplikację Rails 2 na Rails 3, muszę wymienić klejnotsearchlogic. Teraz, używając Rails 3.2.8 z klejnotemPlądrować Chcę zbudować formularz wyszukiwania, który używa istniejącego zakresu. Przykład:
class Post < ActiveRecord::Base
scope :year, lambda { |year|
where("posts.date BETWEEN '#{year}-01-01' AND '#{year}-12-31'")
}
end
O ile wiem, można to osiągnąć, definiując zwyczajransacker. Niestety, nie znalazłem żadnej dokumentacji na ten temat. Próbowałem tego wPost
klasa:
ransacker :year,
:formatter => proc {|v|
year(v)
}
Ale to nie działa:
Post.ransack(:year_eq => 2012).result.to_sql
=> TypeError: Cannot visit ActiveRecord::Relation
Spróbowałem kilku odmianransacker
deklaracja, ale żadna z nich nie działa. Potrzebuję pomocy...
AKTUALIZACJA: Powyższy zakres jest tylko na przykład. Szukam sposobu użycia każdego istniejącego zakresu w Ransacku. W MetaSearch, poprzedniku Ransack, istnieje funkcja o nazwiesearch_methods
do używania zakresów. Ransack mabrak wsparcia dla tego jeszcze z pudełka.