19

私の Rails アプリケーションでは、will_paginategem を使用して 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')

そうでない場合、これを回避する方法をお勧めできますか?私は自分のページネーションを書く必要はありません。

4

3 に答える 3

51

使用paginate_by_sql、すなわち

sql = " SELECT * 
        FROM   users
        WHERE  created_at >= ?
        ORDER  BY created_at DESC "

@users = User.paginate_by_sql(
  [sql, 2.weeks.ago],
  page: @page,
  per_page: @per_page
)

原則として、ファインダーは を に置き換えることでページ付けできfind*ますpaginate*

于 2010-03-29T05:21:39.890 に答える
-2

User.paginate_by_sql(sql, :page => params[:page], :per_page => 10)

于 2015-05-14T12:05:17.800 に答える
-3

これを試して:

@users = User.find_by_sql 
@users = @users.paginate

will_paginate と rails のどのバージョンを使用していますか?

于 2010-03-29T05:08:31.097 に答える