【问题标题】:Mongoid and Rails: Nested FieldsMongoid 和 Rails:嵌套字段
【发布时间】:2016-03-06 17:49:41
【问题描述】:

我正在使用 Mongoid,对于我的应用,我有一个 Course、Section 和 Lesson 模型。 一个课程有_many 个部分,一个部分属于一个课程和has_many 个课程,一个课程属于一个部分。当我尝试时

some_course.some_section.lessons.create()

我收到此错误:NoMethodError: undefined method `lessons' for Mongoid::Criteria

我试着做这样的事情:

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

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

我如何才能将课程创建到一个部分中,就像这样的课程:

some_course.some_section.lessons.create()

?

【问题讨论】:

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


    【解决方案1】:

    正如您所提到的,课程has_many 部分。因此,当您执行some_course.sections 时,您会得到一个Criteria(也称为数据库迭代器)来遍历属于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 也可以使用,但您并不总是确定会返回哪个部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      相关资源
      最近更新 更多