在一个模型定义中,你可以有多个belongs_to 语句吗?如果答案是否定的,请不要继续阅读。我正在尝试在 sinatra 应用程序中创建三个与 mongoid 的 1-n 引用关系。
楷模
class SkillTrack
include Mongoid::Document
belongs_to :student
belongs_to :grading_period
belongs_to :teacher
end
class Student
include Mongoid::Document
field :name
field :nickname
field :dob, type: Date
has_many :skill_tracks
end
class GradingPeriod
include Mongoid::Document
field :school_year
field :period_name
field :signing_date, type: Date
has_many :skill_tracks
end
class Teacher
include Mongoid::Document
field :name
has_many :skill_tracks
end
路线
post "/skill_track/new" do
form = params[:formdata] # using sinatra form helpers gem
student = Student.find("#{formdata["student_mongo_id"]}")
working = (student.skill_tracks.create).id
??? what do I do with working to make it a child of a teacher and of a grading_period?
end
我试过的
从mongoid 文档中对我来说最有希望的是:
band.member_ids = [ id ] #Set the related document ids.
我在 irb 中捣乱,并在我的模型中尝试了很多变化,但我无法为新创建的技能跟踪对象设置家长老师或评分期。学生外键在创建时已正确设置。我希望我有一个简单的语法无知,但我尝试了很多变体,我想知道我是否可以做到这一点。
更新:
我只需要将 working.save 添加到 David Troyer 的回答和繁荣工作中。
post "/skill_track/new" do
form = params[:formdata]
student = Student.find("#{formdata["student_mongo_id"]}")
working = student.skill_tracks.create
working.teacher = Teacher.create # or find
working.grading_period = GradingPeriod.create # or find
working.save
end