关于1..N关系Mongoid的意外行为

时间:2013-07-29 06:46:33

标签: ruby-on-rails mongodb mongoid

我在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]
}

我在两条战线上并不理想

a)关系保存在Coures中(我知道这是根据mongoid文档想知道我是否可以翻转它?)

b)课程只保存一个学生ID而不是一个集合。所以我丢失了数据\

e.g。在蒙戈

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 表明这是正确的。

但这不是我的预期。我想做什么有什么关系吗?

1 个答案:

答案 0 :(得分:0)

为任何想要了解的人

工作

加入

class Student
  has_and_belongs_to_many :courses, inverse_of: nil

同时从belongs_to :student

中删除Course