Paginación a medida en Rails
Hace un tiempo me encontré con un problema que me costó un poco de trabajo solucionar. Necesitaba hacer un listado paginado, pero para poder ordenarlo era necesario hacer un JOIN de dos tablas. Al final lo he solucionado implementando un método que pagina una consulta SQL pasada como parámetro. El código de la función es el siguiente:
def paginate_from_sql(model, sql_query, total, per_page) @pages = Paginator.new self, total, per_page, @params['page'] @items = model.find_by_sql(sql_query + " LIMIT #{per_page} " + "OFFSET #{@object_pages.current.to_sql[1]}") return [@pages, @items] end
Lo he colocado en el application.rb para tener acceso desde cualquier controlador.
Para hacer el listado de una clase llamada Relation, llamo a la función de la siguiente manera:
Yo he echo un JOIN de dos tablas, pero no hace falta decir que podeis poner la consulta SQL que necesiteis.






