ruby on rails - ¿Es posible combinar will_paginate con find_by_sql?
ruby-on-rails will-paginate (3)
En mi aplicación Rails quiero usar la gema will_paginate
para paginar en mi consulta SQL. ¿Es eso posible? Intenté hacer algo como esto pero no funcionó:
@users = User.find_by_sql("
SELECT u.id, u.first_name, u.last_name,
CASE
WHEN r.user_accepted =1 AND (r.friend_accepted =0 || r.friend_accepted IS NULL)
.........").paginate(
:page => @page, :per_page => @per_page,
:conditions => conditions_hash,
:order => ''first_name ASC'')
Si no, ¿puedes recomendar una forma de evitar esto? No quiero tener que escribir mi propia paginación.
User.paginate_by_sql (sql,: page => params [: page],: per_page => 10)
Prueba esto:
@users = User.find_by_sql
@users = @users.paginate
¿Qué versión de will_paginate y rails estás usando?
Utilice paginate_by_sql
, es decir
sql = " SELECT *
FROM users
WHERE created_at >= ''#{2.weeks.ago}''
ORDER BY created_at DESC "
@users = User.paginate_by_sql(sql, :page => @page, :per_page => @per_page)
Como regla general, cualquier buscador puede paginarse reemplazando find*
con paginate*
.