rails 3在mongoid嵌入文档上与kaminari分页

时间:2011-07-21 11:58:26

标签: ruby-on-rails-3 mongoid kaminari

当我在嵌入式文档集合上使用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作为宝石。

亚历

4 个答案:

答案 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)

我希望它有所帮助。