2011-05-17 8 views
14

tengo tres modelos (User, Tag, Product) e interactúan S.T. User tiene muchos Tags y Products.de manchas solares con múltiples modelos (en Rails)

Para fines de búsqueda, me gustaría poder buscar (con una barra de búsqueda) nombres de usuario, nombres de etiquetas y descripciones de productos. También me gustaría buscar en páginas de productos, pero eso solo es relevante para nombres de etiquetas y descripciones de productos.

Aquí hay dos ejemplos:

Búsqueda: "Linus Torvalds" devuelve todas las instancias de Linus Torvalds en los tres modelos con cualquier instancia del nombre de usuario de ser colocado más alto.

Buscar: "Linux" con la edad: "20-25" devuelve todas las instancias de Usuarios con Productos que incluyen "Linux" en su nombre/descripción y entran en ese rango de edad, así como Usuarios con etiquetas que incluyen " Linux "y que tienen productos que caen en ese rango de edad. Tenga en cuenta que si la búsqueda no incluyera la edad, se usaría de forma predeterminada a todos los que encajen en la parte "Linux" en lugar de ninguno.

Mi pregunta es ¿cuál sería la mejor manera de hacerlo? ¿Debo crear un modelo de búsqueda con su propio controlador? ¿Debería simplemente ignorar eso e incluir un parcial de búsqueda en una carpeta compartida? ¿Qué otros métodos hay?

Muchas gracias.

+0

acabaste la creación de nuevos MVCS para su buscador? –

Respuesta

23

Me gusta la idea de un objeto de búsqueda si tiene alguna complicada condición.

Pero para buscar a través de los objetos utilizando la mancha solar:

@sunspot_search = Sunspot.search User, Tag, Product do |query| 
    query.keywords @search_query 
    query.with(:age).greater_than 20 
    query.with(:age).less_than 25 
    query.paginate(:page => params[:page], :per_page => 30) 
end 
+0

¿Cómo hacer una iteración sobre la variable de instancia @sunspot_search en esta situación? ¿Cómo determinar qué resultado es Usuario o Etiqueta o Producto? – scaryguy

+0

@scaryguy http://blog.obiefernandez.com/content/2012/01/rendering-collections-of-heterogeneous-objects-in-rails-32.html –

Cuestiones relacionadas