Gente, He resuelto el problema de consultar con acts_as_ferret sobre múltiples modelos. Apartenemente era un problema de configuración de índices :(...
En la documentación de ferret se mencionan 'gotchas' ( http://projects.jkraemer.net/acts_as_ferret/wiki/gotchas), de posibles problemas que puedan surgir, y bueno por suerte y con razón, este constituia uno de ellos ;) En particular, como dice la última sección, antes de utilizar consultas sobre múltiples modelos es necesario crear los índices sobre los n-modelos sobre los cuales se va a consultar, como lo muestra el ejemplo de la documentación. Así que caso resuelto :D, lo menciono por si alguien tuvo un problema similar para que tome en cuenta esto. Saludos, Marcelo On Dec 15, 2007 12:36 AM, Emmanuel Oga <[EMAIL PROTECTED]> wrote: > > --- Emmanuel Oga <[EMAIL PROTECTED]> > escribió: > > > --- Marcelo Giorgi > > <[EMAIL PROTECTED]> > > escribió: > > > > > Gente, > > > > > > Quiero comentarles mis avances, hopefully alguien > > > sepa como seguir a partir > > > de aquí ;) > > > > > > Encontre > > > > > > > http://nasir.wordpress.com/2007/10/25/full-text-search-using-ferret-acts_as_ferret-with-rails/ > , > > > que menciona que el método find_with_ferret (en > > > lugar de multi_search), > > > desarrollado en los últimos meses (ya en versión > > > stable), esta integrada con > > > will_paginate. > > > > > > Nuevamente, esto funciona bárbaro, para 1 modelo > > :(, > > > en este caso mi código > > > luce así: > > > > > > *class Article < **ActiveRecord::Base* > > > * acts_as_ferret :store_class_name => true* > > > * ...* > > > *end > > > * > > > El controlador luce así: > > > > > > *class SearchResultsController < > > > ApplicationController* > > > * ..* > > > * def search* > > > * @collection = Article.find_with_ferret > > > params[:q], :page => > > > params[:page], :per_page => 1* > > > * end* > > > * ...* > > > *end > > > * > > > Luego, cuando quiero realizar una busqueda sobre 2 > > > modelos (Article y > > > NewsItems), realizo los siguientes cambios: > > > > > > *class NewsItem < ActiveRecord::Base > > > * > > > * acts_as_ferret :store_class_name => true* > > > * ...* > > > *end > > > * > > > Y modifico el controlador de la siguiente forma: > > > > > > *class SearchResultsController < > > > ApplicationController* > > > * ..* > > > * def search* > > > * @collection = Article.find_with_ferret > > > params[:q], :page => > > > params[:page], :per_page => 1, :multi => > > [NewsItem]* > > > * end* > > > * ...* > > > *end > > > * > > > Este código me produce el siguiente error: > > > > > > *RuntimeError in Search resultController#index > > > ':store_class_name => true' required for > > > multi_search to work* > > > > > > Bueno esta sería la nueva situación, si alguien > > > tiene idea que pueda estar > > > pasando estaría buenisimo ;) > > > > > > salutes, > > > marcelo. > > > > > > On Dec 13, 2007 9:51 AM, Marcelo Giorgi > > > <[EMAIL PROTECTED]> > > > wrote: > > > > > > > > > > > Hola gente, > > > > En esta oportunidad la consulta que tengo para > > > hacerles esta más > > > > relacionada a Rails, quizas alguno de ustedes, > > con > > > su expertice, me puedan > > > > tirar una línea en la oscuridad... > > > > > > > > Estoy trabajando en un proyecto en donde > > utilizo: > > > roar ( > > > > > > http://agilewebdevelopment.com/plugins/roar_offers_automated_rails > > > > , que internamente utiliza paginator-1.0.9 para > > la > > > paginación ), para el > > > > manejo de ABMs, y will_paginate ( > > > > > > > > > > > http://www.davidrv.com/web/blog/showNew/paginacion-a-medida-en-ruby-on-rails-will-paginate > ), > > > > que ofrece funcionalidades de paginación. > > > > > > > > El problema se dió cuando quise integrar > > > will_paginate con acts_as_ferret > > > > (para agregar funcionalidades de búsqueda sobre > > > varios modelos a la app). > > > > Encontre algunos links que hacen referencia a la > > > integración de ambos > > > > plugins, como lo menciona Emmanuel en su blog :D > > ( > > > > http://emmanueloga.wordpress.com/2007/09/) > > > > > > > > Hasta ahí todo bien, integrar acts_as_ferret con > > > will_paginate utilizando > > > > el método paginate_search sobre un modelo > > Article > > > (por ejemplo), anda > > > > bárbaro! > > > > > > > > Pero, la intensión de utilizar acts_as_ferret > > era > > > hacer uso de la búsqueda > > > > a través de varios modelos, a través del método > > > multi_search, por ej. Ahí es > > > > donde se me complico, o por lo menos, no > > encontre > > > una solución que integre > > > > act_as_ferret y will_paginate cuando el primero > > > consulta sobre múltples > > > > modelos (multi_search). > > > > > > > > De hecho he encontrando, en RAILS forum, el > > > siguiente thread > > > > > > http://www.railsforum.com/viewtopic.php?pid=47211, > > > que presenta el mismo > > > > problema y allí se sugiere utilizar > > > > > > paginating_find<http://cardboardrocket.com/pages/paginating_find>en > > > lugar de will_paginate; intente seguir este > > esquema > > > pero tampoco me > > > > anduvo, instale el paginating_find pero me > > comenzó > > > a dar algunos errores > > > > (quizas por incompatibildad con los otros > > > paginators que mencione > > > > anteriormente y que tengo instalados en mi > > app).. > > > > > > > > Any thoughts ? > > > > > > > > saludos y gracias, > > > > marcelo. > > > > > > > > > > > > > > > > -- > > > Ing. Marcelo Giorgi > > > > _______________________________________________ > > > Ruby mailing list > > > [email protected] > > > > > > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar > > > > > > > Marcelo, a decir verdad mis busquedas siempre han > > sido > > medio modestas por lo que no investigue la forma de > > hacer busquedas sobre dos modelos a la vez. Pero > > recuerdo que podias agregar a la info indexada por > > ferret el resultado de un metodo de tu model, por > > ejemplo en tu caso: > > > > class Article < **ActiveRecord::Base* > > has_many :news_items > > acts_as_ferret :fields => %w|campo1 campo2|, > > :methods => %w|nitems| > > > > def nitems > > self.news_items.map { |a| a.name }.join(" ") > > end > > end > > > > Si no logras hacer funcionar la busqueda con > > multiples > > models, quizas eso te sirva. Si lo logras, despues > > contanos :) > > > > mmm en la api methods no figura.. que raro recordaba > que si!!! Pero creo que se puede hacer... de alguna > manera... :) > > > > ---------------------------------------------------------------------------- > EmmanuelOga.WordPress.com > > > Tarjeta de crédito Yahoo! de Banco Supervielle. > Solicitá tu nueva Tarjeta de crédito. De tu PC directo a tu casa. > www.tuprimeratarjeta.com.ar > _______________________________________________ > Ruby mailing list > [email protected] > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar > -- Ing. Marcelo Giorgi
_______________________________________________ Ruby mailing list [email protected] http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
