Kaminari没有将分页方法应用于宝石中定义的模型

时间:2012-03-02 06:48:44

标签: ruby-on-rails gem kaminari

我使用Mongoid和Kaminari进行分页,它适用于Rails应用程序本身定义的模型。但是,我还包括一个定义了几个模型的gem,当我尝试在这些模型上使用分页时,'page'方法是未定义的。就像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创建一个未定义的方法'conditions':来自(eval)的NilClass:3:在'page'中。

有没有办法让Kaminari使用宝石中定义的模型?

1 个答案:

答案 0 :(得分:2)

如果你想对这些模型进行分页,你需要告诉Kaminari关于gem中的模型。您可以通过将以下代码添加到config / environment.rb文件或作为单独的初始化程序(例如initializers / kaminari.rb)来实现。

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

让我感到震惊的另一件事是GemModel不能成为任何东西的超类。否则,您将获得零对象错误。