0

Mongoid で 1...N の関係をセットアップしています

class Student < User
  include Mongoid::Document
   ... 
  has_many :courses

class Course
  include Mongoid::Document
  belongs_to :student

私には2人の生徒がいます

student1 = Student.create!(...)
student2 = Student.create!(...)


course1 = Course.create!(name: "Course 1")
course2 = Course.create!(name: "Course 2")
course3 = Course.create!(name: "Course 3")

student1.courses = [course1,course2]
student1.save!

student2.courses = [course2,course3]
student2.save!

理想的にはmongodbで欲しいもの

Student{
 coures:[CourseId,CourseId,CourseId]
}

私が得たものは、2つの面で理想的ではありませんでした

a) リレーションシップは Coures に保存されます (これは mongoid のドキュメントのとおりだと思いますが、これをひっくり返すことができるかどうか疑問に思っています)。

b) コースは、コレクションではなく単一の学生 ID のみを保存しています。したがって、データを失います \

例えばモンゴで

Courses
{
"_id" : ObjectId("51f607bdb5b6057c92000005"),
"name" : "Course 1",
"student_id" : ObjectId("51f607bdb5b6057c92000002"),
}
{
"_id" : ObjectId("51f607bdb5b6057c92000006"),
"name" : "Course 2",
"student_id" : ObjectId("51f607bdb5b6057c92000003"),
}
{
"name" : "Course 3",
"student_id" : ObjectId("51f607bdb5b6057c92000003"),
}

http://mongoid.org/en/mongoid/docs/relations.html#has_many がこれが正しいことを示していることを理解しています。

しかし、それは私が期待したものではありません。私がやろうとしていることと何か関係がありますか?

4

1 に答える 1

0

知りたい人のために解決しました

追加した

class Student
  has_and_belongs_to_many :courses, inverse_of: nil

belongs_to :studentからも削除Course

于 2013-07-29T06:58:31.220 に答える