paginate_by_sql и Rails3.0.0Beta4 - PullRequest
       7

paginate_by_sql и Rails3.0.0Beta4

0 голосов
/ 30 июня 2010

Я пытаюсь портировать существующее приложение rails, использующее rails 2.3.8, на 3.0.0beta4.

В настоящее время я использую этот хак paginate_by_sql

module ActiveRecord 
    class Base 
        def self.find_by_sql_with_limit(sql, offset, limit) 
            sql = sanitize_sql(sql) 
            add_limit!(sql, {:limit => limit, :offset => offset}) 
            find_by_sql(sql) 
        end 
        def self.count_by_sql_wrapping_select_query(sql) 
            sql = sanitize_sql(sql) 
            count_by_sql("select count(*) from (#{sql}) as x") 
        end 
   end 
end 

add_limit! метод был удален из класса ActiveRecord :: Base. Есть ли обходные пути для этого? Любые альтернативы делать нумерация страниц по SQL в Rails 3.0.0?

Спасибо

Ответы [ 2 ]

0 голосов
/ 15 июля 2011

Я знаю, что это старо, но я наткнулся на похожую проблему и, надеюсь, смогу помочь кому-то еще.Чтобы это исправить, убедитесь, что вы используете Rail_ 3-совместимую версию will_paginate, добавив

gem "will_paginate", "~> 3.0.pre2"

в свой Gemfile

0 голосов
/ 30 июня 2010

хм, кажется, это работает.

module ActiveRecord 
    class Base 
        def self.find_by_sql_with_limit(sql, offset, limit) 
            sql = sanitize_sql(sql) 
            find_by_sql(sql + " LIMIT #{offset},#{limit}") 
        end 
        def self.count_by_sql_wrapping_select_query(sql) 
            sql = sanitize_sql(sql) 
            count_by_sql("select count(*) from (#{sql}) as x") 
        end 
   end 
end 

Вы можете сохранить его в Application Controller.Он должен быть загружен в первую очередь перед загрузкой любого класса ActiveRecord, поэтому ApplicationController будет хорошим местом.

...