Mongoid 和 Rails:嵌套字段

Mongoid and Rails: Nested Fields

我正在使用 Mongoid,对于我的应用程序,我有一个课程、部分和课程模型。 一门课程 has_many 节,一节 belongs_to 一节课和 has_many 节课,一节课 belongs_to 节。当我尝试

some_course.some_section.lessons.create()

我收到此错误:NoMethodError:Mongoid::Criteria

的未定义方法“课程”

我试过这样做:

#Course.rb 
has_many :sections, -> { includes :lessons }

我得到一个错误:没有将 Proc 隐式转换为 Hash

我怎样才能将课程创建到一个部分中,它在这样的课程中:

some_course.some_section.lessons.create()

?

如您所述,课程 has_many 部分。因此,当您执行 some_course.sections 时,您会得到一个 Criteria(a.k.a 数据库迭代器)来迭代属于 some_course 的所有部分。即使您在 sections 上应用条件使其仅匹配一个部分,您仍然会得到 Criteria.

some_course.sections.where(id: 'unique_section_id') returns 一个标准。如果您想要实际的 Section 对象,请在条件上使用 first 方法。

some_course.sections.where(id: 'unique_section_id').first

请注意 some_course.sections.first 也有效,但您并不总是确定会返回哪个部分。