Kaminari не применяет методы нумерации страниц к моделям, определенным в драгоценных камнях - PullRequest
1 голос
/ 02 марта 2012

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

Я попытался изменить порядок процесса инициализации, а также создать инициализатор, который специально пытается добавить область действия и подпрограммы 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 

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

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

1 Ответ

2 голосов
/ 07 марта 2012

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

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

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

...