ruby-on-rails - 在 Rails 引擎 mongoid 中访问嵌入的文档父级
问题描述
我正在将一些以前没有问题的代码转换为 Rails 命名空间引擎,以便可以重用。这是一个当前不适用于我的示例:
module MyModule
class School
include Mongoid::Document
embeds_one :student
end
end
module MyModule
class Student
include Mongoid::Document
embedded_in :school
end
end
但是,当我创建一所学校并为其分配一个学生并尝试通过该属性访问其父级时school
,它返回 nil。
school = MyModule::School.create
school.student = MyModule::Student.new
school.save!
school.student.school // return nil
school.student._parent // returns the school object
我做错了什么导致school.student.school
返回零?
解决方案
您缺少关联上的类名:
module MyModule
class School
include Mongoid::Document
embeds_one :student, class_name: 'MyModule::Student'
end
end
module MyModule
class Student
include Mongoid::Document
embedded_in :school, class_name: 'MyModule::School'
end
end
可以提出一个论点,即 Mongoid 应该自动解决这个问题,尽管这里的复杂情况是当第一个模型被加载时,另一个模型尚未定义,因此目标类可能是全局的或在命名空间中,而 Mongoid 没有知道哪个是正确的方法。
推荐阅读
- assembly - 我在反汇编 MSVC 输出时经常看到的函数 jmp 指令表是什么?
- twilio - 使用 Twilio 功能的定时器功能
- python - 识别具有相同值的下一行并创建新的列熊猫数据框
- python - 在python中获取坐标列表的平均值
- google-cloud-platform - 将服务帐户添加到实例并授予访问范围所需的权限
- javascript - 这是预期的 PouchDb 性能吗?
- css - 如何用 BEM 组织 CSS?
- ruby-on-rails - Rails 5.2 的路由语法是否发生了很大变化
- javascript - 如何使用 JavaScript 在 HTML 表中显示 MySQL 数据库条目?
- sql - 为什么 SQL/RDBMS 不支持在子查询上应用聚合函数?