我使用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使用宝石中定义的模型?
答案 0 :(得分:2)
如果你想对这些模型进行分页,你需要告诉Kaminari关于gem中的模型。您可以通过将以下代码添加到config / environment.rb文件或作为单独的初始化程序(例如initializers / kaminari.rb)来实现。
GemModel.send(:include, Kaminari::MongoidExtension::Document)
让我感到震惊的另一件事是GemModel不能成为任何东西的超类。否则,您将获得零对象错误。