[Ror-es] paginate_by_sql

Sergio Gil Pérez de la Manga sgilperez at gmail.com
Mon Apr 2 15:27:53 GMT 2007


On 4/2/07, Jaime Iniesta <jaime at railes.net> wrote:
>
>  Hola!
>
> Tengo una lista [1] paginada con el método tradicional (paginate), pero me
> gustaría poder ordenarla por un campo que no está directamente en el modelo
> paginado. Me explico. Estoy listando paginados los "watchers", que a su vez
> están enlazados con las "paginas" a través de pagina_id. Son las paginas las
> que tienen los campos "address" y "pagerank", así que en este listado se
> muestra en plan
>
> <% for watcher in @watchers %>
>
>     <%= watcher.pagina.address %> - <%= watcher.pagina.pagerank %> <br />
>
> <% end %>
>
> Total, que me gustaría ordenar el listado por watcher.pagina.address o
> watcher.pagina.pagerank pero paginate solo me permitirá ordenarlo por
> campos del modelo watcher...
>
> Por lo que he visto, para esto existe paginate_by_sql [2], pero no forma
> parte de Rails, así que lo tengo que incorporar a mi aplicación... ¿Es así?
> ¿Existe una solución mejor?
>
> Gracias!
>
> [1] http://www.pagerankalert.com/watchers/list
> [2]
> http://thebogles.com/blog/2006/06/paginate_by_sql-for-rails-a-more-general-approach/
>

No lo he probado pero me imagino que funcionará; si al find le metes un
include podrías ordenar por un campo del otro modelo (aunque no podrás usar
el clásico paginate, creo, sí podrás usar el método aún más clásico de
instanciar el Paginator. Algo como

Watcher.find(:all, :include => :pagina, :order => 'paginas.address', ...)

Cuéntanos si funciona =;-)


-- 
Sergio Gil Pérez de la Manga
e-mail > sgilperez at gmail.com
blog > http://www.lacoctelera.com/porras
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.simplelogica.net/pipermail/ror-es/attachments/20070402/5288de68/attachment-0001.htm 


More information about the Ror-es mailing list