2016-03-06 2 views
1

Я использую Mongoid и для своего приложения у меня есть курс, раздел и модель урока. Курс has_many разделов, раздел принадлежит к курсу и has_many урокам, а урок принадлежит разделу. Когда я пытаюсьMongoid and Rails: Вложенные поля

some_course.some_section.lessons.create() 

Я получаю эту ошибку: NoMethodError: неопределенный метод `уроки для Mongoid :: Критерии

Я пытался делать что-то вроде этого:

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

И я получаю ошибку : Нет неявного преобразования Proc в Hash

Как я могу создать урок в секции, которая находится в таком виде:

some_course.some_section.lessons.create() 

?

ответ

0

Как вы упомянули, курс has_many разделы. Поэтому, когда вы делаете some_course.sections, вы получаете Criteria (a.k.a итератор базы данных), чтобы перебирать все разделы, принадлежащие some_course. Даже когда вы применяете условие на sections, чтобы оно соответствовало только одному разделу, вы все равно возвращаете Criteria.

i.e some_course.sections.where(id: 'unique_section_id') возвращает критерии. Если вы хотите, чтобы фактический объект Section использовал метод first по критериям.

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

Обратите внимание, что some_course.sections.first также работает, но вы не всегда уверены, какой раздел вы получите обратно.

Смежные вопросы