рельсы 3 нумерация страниц с каминари на монгоидных документах - PullRequest
1 голос
/ 21 июля 2011

Когда я вызываю paginate с kaminari для коллекции встроенных документов, я получаю следующую ошибку:

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

Есть идеи, как я могу это исправить? Я установил каминари как драгоценный камень.

Alex

Ответы [ 4 ]

2 голосов
/ 22 июля 2011

Вам просто нужно получить доступ к коллекции через родительский объект.Например, для следующих моделей:

class User
  include Mongoid::Document
  embeds_many :bookmarks
end

class Bookmark
  include Mongoid::Document
  embedded_in :user
end

Затем, чтобы разбить на страницы закладки данного пользователя, вы должны сделать:

@user.bookmarks.page(params[:page])
1 голос
/ 25 августа 2011

Я только что отправил патч для выпуска.Посмотрите на запрос.надеюсь, это поможет решить вашу проблему.https://github.com/amatsuda/kaminari/pull/155/files

1 голос
/ 22 июля 2011

Я нашел эту проблему на Kaminari: https://github.com/amatsuda/kaminari/issues/89

Так что я раздвоил ее и исправил, следуя решению, предоставленному spatrik.Я не уверен на 100%, что это будет работать во всех случаях, и что у этого решения нет недостатков.Но на данный момент все работает именно так, как и ожидалось.

Alex

0 голосов
/ 09 октября 2011

С предыдущим примером 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])

пока nex one будет работать нормально:

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

Надеюсь, это поможет.

...