1

当我在嵌入文档的集合上使用 kaminari 调用 paginate 时,出现以下错误:

(Access to the collection for Document is not allowed since it is an embedded document, please access a collection from the root document.):

关于如何解决这个问题的任何想法?我已将 kaminari 安装为 gem。

亚历克斯

4

4 回答 4

2

您只需要通过父对象访问集合。例如,给定以下模型:

class User
  include Mongoid::Document
  embeds_many :bookmarks
end

class Bookmark
  include Mongoid::Document
  embedded_in :user
end

然后对给定用户的书签进行分页,您将执行以下操作:

@user.bookmarks.page(params[:page])
于 2011-07-22T00:25:04.387 回答
1

我在 Kaminari 上发现了这个问题:https ://github.com/amatsuda/kaminari/issues/89

所以我分叉了它,并按照 spatrik 提供的解决方案对其进行了修复。我不是 100% 确定它适用于所有情况,并且该解决方案没有任何缺点。但目前它完全按预期工作。

亚历克斯

于 2011-07-22T02:52:29.170 回答
1

我刚刚为这个问题发送了一个补丁。看一下请求。希望这有助于解决您的问题。
https://github.com/amatsuda/kaminari/pull/155/files

于 2011-08-24T22:48:23.917 回答
0

使用前面的 theTRON 示例:

class User
  include Mongoid::Document
  embeds_many :bookmarks
end

class Bookmark
  include Mongoid::Document
  field :created_at, :type => DateTime

  embedded_in :user
end

以下内容将为您提供您在帖子中描述的错误:

@user.bookmarks.desc(:created_at).page(params[:page])

而下一个可以正常工作:

@user.bookmarks.page(params[:page]).desc(:created_at)

我希望它有所帮助。

于 2011-10-09T12:00:31.983 回答