Mongoid和Rails:嵌套字段

时间:2016-03-06 17:49:42

标签: ruby-on-rails mongoid nested-attributes

我正在使用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()

1 个答案:

答案 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也有效,但您并不总是确定要返回哪个部分。