Действительно ли возможно объединить will_paginate с find_by_sql?

В моем приложении направляющих я хочу использовать will_paginate драгоценный камень для нумерации страниц на моем 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')

В противном случае можно ли рекомендовать путь вокруг этого? Я не хочу должным быть писать свое собственное разбиение на страницы.

17
задан Makoto 9 November 2015 в 23:15
поделиться

2 ответа

Используйте 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 * .

49
ответ дан 30 November 2019 в 11:08
поделиться

Попробуйте это:

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

Какой will_paginate и версию rails вы используете?

-3
ответ дан 30 November 2019 в 11:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: