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
也有效,但您并不总是确定会返回哪个部分。
我正在使用 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
也有效,但您并不总是确定会返回哪个部分。