是否可以将will_paginate与find_by_sql结合使用?

时间:2010-03-29 04:56:35

标签: ruby-on-rails will-paginate find-by-sql

在我的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')

如果没有,你能推荐一个方法吗?我不想写自己的分页。

3 个答案:

答案 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版本?