我正在创建描述某人的个人资料。本说明书中包含有关其工作行业的信息(即“Computers& IT”)。因此,定义关系:
"A Profile has an Industry, but an Industry does not belong to a Profile."
通过this Mongoid documentation查看,我使用以下内容设置模型:
class Profile
include Mongoid::Document
has_one :industry
end
class Industry
include Mongoid::Document
field :name, type: String, default: ''
end
现在我知道您通常会在行业类中添加belongs_to :profile
。但是,根据文档,它将外键添加到子(行业),而不是父(配置文件):
# The parent profile document.
{ "_id" : ObjectId("4d3ed089fb60ab534684b7e9") }
# The child industry document.
{
"_id" : ObjectId("4d3ed089fb60ab534684b7f1"),
"profile_id" : ObjectId("4d3ed089fb60ab534684b7e9")
}
这是有问题的,因为我不希望行业链接到个人资料,我希望个人资料链接到行业。 如何让它看起来像这样?:
# The parent profile document.
{ "_id" : ObjectId("4d3ed089fb60ab534684b7e9")
"industry_id" : ObjectId("4d3ed089fb60ab534684b7f1")
}
# The child industry document.
{
"_id" : ObjectId("4d3ed089fb60ab534684b7f1"),
}
答案 0 :(得分:0)
我发现Mongoid中关系的名称选择令人困惑,但它反映了ActiveRecord,所以你去了。你想要:
class Industry
has_many :profiles
end
class Profile
belongs_to :industry
end
belongs_to
的班级有FK字段。 has_one
和has_many
创建关联以在另一个类中查找FK。