访问 rails 引擎 mongoid 中的嵌入式文档父级
Accessing embedded document parent in rails engine 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
属性 访问其父级时,它 return 为零。
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
变为 return 零?
您缺少关联中的 class 个名称:
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 应该自动解决这个问题,尽管这里的一个复杂问题是当加载第一个模型时另一个模型尚未定义,因此目标 class 可能是全局或命名空间中,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
属性 访问其父级时,它 return 为零。
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
变为 return 零?
您缺少关联中的 class 个名称:
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 应该自动解决这个问题,尽管这里的一个复杂问题是当加载第一个模型时另一个模型尚未定义,因此目标 class 可能是全局或命名空间中,Mongoid 无法知道哪个是正确的。