1

私は最近この質問を投稿しました:多くの親との多くの自己参照関係をモデル化する方法は?

適切な答えが得られましたが、Mongo/Mongoidを使用してこれをより適切にモデル化できると言われました。私はいつも別のデータベースパラダイムを使用してみたかったので、これは良いスタートになるかもしれません。

これはMongoを使用してモデル化する方が簡単だというのは本当ですか?もしそうなら、私のためにそれをレイアウトするのを手伝ってもらえますか?

私には基本的に2つの選択肢がありますよね?1は、スキル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 に答える