在我的Rails应用程序中,我想使用will_paginate
gem在我的SQL查询上进行分页。那可能吗?我尝试过做这样的事情,但它不起作用:
@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')
如果没有,你能推荐一个方法吗?我不想写自己的分页。
答案 0 :(得分:48)
使用paginate_by_sql
,即
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)
作为一般规则,可以通过将find*
替换为paginate*
来对任何查找程序进行分页。
答案 1 :(得分:-2)
User.paginate_by_sql(sql,:page => params [:page],:per_page => 10)
答案 2 :(得分:-3)
试试这个:
@users = User.find_by_sql
@users = @users.paginate
你使用什么will_paginate和rails版本?