2011-09-28 13 views
5

Quiero construir filtros dinámicos con rieles para uno de mis modelos, pero no sé cuál es la mejor manera de hacerlo.La mejor manera de construir un filtro múltiple en rieles

Mi modelo es en bruja evento tiene un Continente, un País y un mes.

Así que quiero ser capaz de encontrar un evento con varios filtros. Por ejemplo, "Se han encontrado todos los eventos en Europa para el mes de febrero"

¿Cuál es la mejor manera de hacerlo? Tengo que hacer una función findByfilter en mi modelo de eventos?

Gracias por su respuesta, ejemplos son bienvenidos!

(yo uso los carriles 3)

Respuesta

4

Estoy adivinando lo que estás buscando es un poco más allá de simplemente utilizando scope para crear filtros:

es decir

class Event < ActiveRecord::Base 
    scope :by_continent, lambda {|continent| where(:continent => continent)} 
    scope :by_country, lambda {|country| where(:country => country)} 
    ... 
end 

y luego hacer Event.by_continent('NA').by_country('Canada')

Si está buscando construir un modelo de búsqueda más formal con un mecanismo al to_s y describir su búsqueda, probablemente comenzaría con algo como Railscast 111. Él construye un modelo de búsqueda avanzada, que básicamente le permite establecer campos y luego filtrarlos según lo establecido.

De eso, podría implementar su propio método to_s (u otro nombre, si lo prefiere) que verificará qué atributos de búsqueda se han establecido y creará una buena cadena para describirlo.

+0

Sí, tienes razón, yo usé eso – Sebastien

Cuestiones relacionadas