1

我正在使用带有 Kaminari 的 Mongoid 进行分页,它适用于在 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 

但是,这会为来自 (eval):3:in 'page' 的 nil:NilClass 创建一个未定义的方法 'conditions'。

有什么方法可以让 Kaminari 使用 gems 中定义的模型?

4

1 回答 1

2

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

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

让我感到困惑的另一件事是 GemModel 不能是任何东西的超类。否则,您将得到 nil 对象错误。

于 2012-03-07T16:24:55.733 回答