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