2014-01-12 2 views
0

У меня есть база данных «событий» с множеством атрибутов. Как я могу разрешить моим пользователям искать «события». Я видел учебное пособие по поиску текста, но я ищу больше поисков ON/OFF.Rails search - множественный специфический атрибут атрибутов модели

Каждое событие имеет время, местоположение (координаты) и несколько других селекторов. Я хотел бы, чтобы пользователь мог выполнять поиск по времени (мин, макс) и/или местоположению (ближе всего к их входным координатам) и выбирать из селекторов.

Как это сделать? Любые конкретные учебники, на которые я должен обратить внимание. Я не мог найти ничего рядом. Благодаря

должен включать в себя множество атрибутов и логическую математику (это место поиска в радиусе 5 км от «события» места.

Благодаря

+0

https://github.com/berk/will_filter – Bartosz

ответ

1

Try scopes. Создайте область для каждого поиска атрибута в модели.
Для атрибута пример времени:

scope :time_search, ->(min, max) { where("time_column > ? AND time_column < ?", min, max) }

А потом от контроллера:. Model.time_search(params[:min], params[:max])
Вы также можете объединить области, например: Model.scope_1(param).scope_2(param), которые будут фильтровать записи на основе критериев из этих 2 областей.

+0

«Model.scope_1 (param) .scope_2 (param) делает, чем означает, что я должен изменить ваш код на« scope_1: time_search », и мой поиск местоположения должен быть« scope_2: location_search "? – Marcus

+1

Nope.' scope' - это метод rails для определения новых областей (вы не должны его изменять). Имя области действия является символом и определяется следующим образом: 'scope: your_scope_name_here'. –

Смежные вопросы