2011-07-21 44 views
1

當我打電話與雷分頁上嵌入文檔,我得到以下錯誤的集合:軌道3分頁與雷在mongoid嵌入文檔

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

我如何能解決這個問題的任何想法?我已經安裝了kaminari作爲寶石。

Alex

+0

你有什麼樣的mongoid版本? – Anatoly

+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]) 
+0

我試過了,但它對我不起作用:undefined局部變量或方法'頁面'爲#<#:0x10e37fe88>,我的模型是嵌入在「Project」中的「Document」 – Alex

+0

奇怪。我在一個我現在正在開發的項目上測試了這個功能 - 它絕對有效。看起來你可能還會遇到其他一些問題,因爲它似乎是在'Class'上調用'Page'',而不是你的集合'Criteria'。 – theTRON

1

我發現雷這個問題:https://github.com/amatsuda/kaminari/issues/89

所以我分叉了,並按照spatrik提供的解決方案進行修復。我不是100%確定它可以適用於所有情況,並且此解決方案沒有任何缺點。但目前它的工作方式與預期完全一致。

Alex

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]) 

而NEX一會正常工作:

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

我希望它有幫助。