Я предполагаю, что вы ищете немного больше, чем просто использование scope
для создания фильтров:
то есть
class Event < ActiveRecord::Base
scope :by_continent, lambda {|continent| where(:continent => continent)}
scope :by_country, lambda {|country| where(:country => country)}
...
end
, а затем выполнение Event.by_continent('NA').by_country('Canada')
Если вы хотите построить более формальную поисковую модель с механизмом to_s
и описать свой поиск, я, вероятно, начну с чего-то вроде Railscast 111 .Он строит расширенную модель поиска, которая в основном позволяет вам устанавливать поля, а затем фильтровать их на основе того, что установлено.
Исходя из этого, вы можете реализовать свой собственный метод to_s
(или другое имя, если хотите), который будет приниматьпосмотрите, какие атрибуты поиска были установлены, и создайте красивую строку для ее описания.