Каминари не применяет методы разбивки на страницы к моделям, определенным в драгоценных камнях

Я использую Mongoid с Kaminari для разбивки на страницы, и он отлично работает для моделей, определенных в самом приложении Rails. Однако я также включаю гем, который определяет еще несколько моделей, и когда я пытаюсь использовать разбиение на страницы для этих моделей, метод «страница» не определен. Как будто Kaminari не находит эти модели при инициализации.

Я попытался изменить порядок процесса инициализации, а также создать инициализатор, который специально пытается добавить область действия и подпрограммы Kaminari к моделям Gem:

GemModel.class_eval do 
  include Kaminari::ConfigurationMethods 

  scope :page, Proc.new {|num|
    limit(default_per_page).offset(default_per_page * ([num.to_i, 1].max - 1))
  } do 
    include Kaminari::ActiveRecordRelationMethods 
    include Kaminari::PageScopeMethods 
  end
end 

Однако это создает неопределенные условия метода для nil:NilClass from (eval):3:in 'page'.

Есть ли способ заставить Каминари работать с моделями, определенными в драгоценных камнях?


person Dave Hill    schedule 02.03.2012    source источник


Ответы (1)


Вам нужно сообщить Каминари конкретно о моделях внутри драгоценного камня, если вы хотите разбить эти модели на страницы. Вы можете сделать это, добавив следующий код в файл config/environment.rb или в качестве отдельного инициализатора (например, initializers/kaminari.rb).

GemModel.send(:include, Kaminari::MongoidExtension::Document)

Еще одна вещь, которая меня сбила с толку, это то, что GemModel не может быть суперклассом чего-либо. В противном случае вы получите нулевые ошибки объекта.

person Dave Hill    schedule 07.03.2012