1

我正在创建一个描述一个人的个人资料。此描述中包含有关他们从事的行业的信息(即“计算机与 IT”)。因此,该关系被定义为:

"A Profile has an Industry, but an Industry does not belong to a Profile."

浏览这个 Mongoid 文档,我使用以下内容设置了我的模型:

class Profile
  include Mongoid::Document

  has_one :industry
end

class Industry
  include Mongoid::Document

  field :name,      type: String, default: ''
end

现在我知道通常你会belongs_to :profileIndustry类中添加一个。但是,根据文档,它将外键添加到子项(行业),而不是父项(配置文件):

# 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"),
}
4

1 回答 1

0

我发现 Mongoid 中关系名称的选择令人困惑,但它反映了 ActiveRecord,所以你去吧。你要:

class Industry 
    has_many :profiles 
end

class Profile 
    belongs_to :industry
end

belongs_to具有 FK 字段 的类。has_onehas_many创建关联以在另一个类中找到 FK。

于 2013-04-21T18:34:19.753 回答