我有2个Mongoid模型,看起来像这样:
class User
include Mongoid::Document
field :name, type: String
embeds_many :jobs
end
class Job
include Mongoid::Document
field :title, type: String
embedded_in :user
end
这允许我做类似
的事情user.jobs.create(title: 'Test Job')
但是,我希望能够为用户选择一些预定义的作业,然后将其嵌入用户的文档中。像这样:
Job.create(title: 'Predefined Job')
user.jobs << Job.first
但是,在它上面创建一个作业会引发以下错误
如果没有父文档,则无法保留嵌入式文档角色。
我是Mongoid的新手,在文档中找不到任何这方面的例子。有人知道你会怎么做吗?
答案 0 :(得分:5)
如果没有父文档,则无法保留嵌入式文档角色。
由于错误明确指出embedded document
只能嵌入另一个文档中。它不能像它自己一样存在。如果您想使角色独立于用户,则需要将关系更改为has_many
<{1}}
embeds_many
所以你可以
class User
include Mongoid::Document
field :name, type: String
has_many :jobs
end
class Job
include Mongoid::Document
field :title, type: String
belongs_to :user
end
和
Job.create(title: 'Predefined Job')
user.jobs << Job.first
或者如果您仍想继续job = Job.new(title: 'Predefined Job')
job.save
关系,则需要制作单独的文档来存储预定义的作业