2017-03-02 29 views
1

奇怪的錯誤未定義的每個方法我有兩個基本mongoid類:mongoid 6.1.0預先加載投擲零

class CaseType 
    include Mongoid::Document 

    has_many :case_type_field_sets 

... 


class CaseTypeFieldSet 
    include Mongoid::Document 
... 
    belongs_to :case_type 
... 
在控制檯

,我喜歡簡單的東西:

CaseType.includes(:case_type_field_sets).count 

這個作品精細。

,如果我做

CaseType.includes(:case_type_field_sets).first 

它拋出一個錯誤:

NoMethodError: undefined method `each' for nil:NilClass 
from /(path)/lib/mongoid/relations/eager/base.rb:92:in `set_on_parent' 

任何想法是怎麼回事?

+0

是否特定於mongoid版本?你有沒有嘗試過以前版本的mongoid? –

+1

感謝jagdeep的答案。我確實看過這個。原來問題是我已經在模型中聲明瞭引用的_id字段。刪除可以解決問題。當我被允許時,我會發佈一個答案,這有一些愚蠢的SO規則。 – user1130176

回答

1

這種情況發生在您手動聲明外鍵時,如果您在構建mysql應用程序的習慣之後構建mongo應用程序,這是一種習慣性的力量。所以,如果你有手動聲明,如:

belongs_to :parent 
field :parent_id, type: String 

移除外鍵聲明,B/C mongoid需要照顧這對你來說,將解決「未定義的方法爲每個無」的問題。