Ruby on rails mongoid 6.1.0每个为零的错误未定义方法

Ruby on rails mongoid 6.1.0每个为零的错误未定义方法,ruby-on-rails,mongodb,mongoid,eager-loading,Ruby On Rails,Mongodb,Mongoid,Eager Loading,我有两个基本的mongoid类: 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).

我有两个基本的mongoid类:

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'

知道这是怎么回事吗

当您手动声明外键时会发生这种情况,如果您在习惯于构建mysql应用程序之后还要构建mongo应用程序,这是一种习惯。因此,如果您有如下手动声明:

belongs_to :parent
field :parent_id, type: String

删除该外键声明后,b/c mongoid将为您解决此问题,这将解决“未定义方法各为零”的问题。

它是否特定于mongoid版本?你用以前版本的mongoid试过了吗?谢谢jagdeep的回答。我确实调查过这件事。问题是我在模型中声明了引用的_id字段。删除该选项解决了问题。当我被允许的时候,我会发布一个答案,这有一些愚蠢的规则。