我正在使用Mongoid,对于我的应用程序,我有一个Course,Section和Lesson模型。 课程has_many部分,一个部分属于课程和has_many课程,课程属于一个部分。当我尝试
some_course.some_section.lessons.create()
我收到此错误:NoMethodError:Mongoid :: Criteria的未定义方法`lessons'
我尝试过这样的事情:
#Course.rb
has_many :sections, -> { includes :lessons }
我收到一个错误:没有将Proc隐式转换为Hash
我怎样才能在课程中创建一个课程,这个课程是这样的:
some_course.some_section.lessons.create()
答案 0 :(得分:0)
正如您所提到的,课程has_many
部分。因此,当您执行some_course.sections
时,您将获得Criteria
(a.k.a数据库迭代器)来迭代属于some_course
的所有部分。即使您在sections
上应用条件以使其仅匹配一个部分,您仍然可以获得Criteria
。
即some_course.sections.where(id: 'unique_section_id')
返回一个标准。如果您希望实际的Section
对象在条件上使用first
方法。
即some_course.sections.where(id: 'unique_section_id').first
请注意,some_course.sections.first
也有效,但您并不总是确定要返回哪个部分。