1

我最近发布了这个问题:如何与许多父母建立许多自我参照关系?

我得到了足够的答案,但有人告诉我,我可以使用 Mongo/Mongoid 更好地建模。我一直想尝试使用不同的数据库范例,所以也许这将是一个好的开始。

使用 Mongo 建模会更容易吗?如果是这样,你能帮我布置一下吗?

我基本上有两个选择,对吧?1是通过引用Skill id的文档创建一个数组吗?例如,Skill.prerequisites = [Skill1,Skill2,Skill3]。适合这种结构的东西对吗?

否则,我可能需要在该关联上运行一些合乎逻辑的东西,所以我必须创建一个单独的模型。这就是我感到困惑的地方。鉴于我可能需要创建一个单独的模型,它是作为文档还是嵌入式文档存在?我对每种策略的限制是什么?

4

1 回答 1

2

好的,让我们来看看你的技巧方法吧。这是我在 Mongoid 中建模的方法:

class Skill
  include Mongoid::Document

  field :prereqruisite_skill_ids, type: Array, default: []

  def prereqruisite_skills
    Skill.any_of(:_id => prereqruisite_skill_ids).all
  end

  def add_prereqruisite!(skill)
    self.prereqruisite_skill_ids << skill
    safely.save!
  end
end

使用 Mongo,这是我唯一的方法。

使用 ActiveRecord,您可以:

class Skill < AR::Base
  has_many :skill_prereqruisites
  has_many :prerequisites, through: skill_prereqruisites, class_name: "Skill"
end

class SkillPrereqruisite < AR::Base
  belongs_to :skill_one, foreign_key: "skill_one_id"
  belongs_to :skill_two, foreign_key: "skill_two_id"
end
于 2012-07-19T22:55:09.347 回答