当我在嵌入文档的集合上使用 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。
亚历克斯
当我在嵌入文档的集合上使用 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。
亚历克斯
您只需要通过父对象访问集合。例如,给定以下模型:
class User
include Mongoid::Document
embeds_many :bookmarks
end
class Bookmark
include Mongoid::Document
embedded_in :user
end
然后对给定用户的书签进行分页,您将执行以下操作:
@user.bookmarks.page(params[:page])
我在 Kaminari 上发现了这个问题:https ://github.com/amatsuda/kaminari/issues/89
所以我分叉了它,并按照 spatrik 提供的解决方案对其进行了修复。我不是 100% 确定它适用于所有情况,并且该解决方案没有任何缺点。但目前它完全按预期工作。
亚历克斯
我刚刚为这个问题发送了一个补丁。看一下请求。希望这有助于解决您的问题。
https://github.com/amatsuda/kaminari/pull/155/files
使用前面的 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)
我希望它有所帮助。