class Student < ActiveRecord::Base
has_many :enrollments
has_many :courses, :through => :enrollments
accepts_nested_attributes_for :courses
end
class Course < ActiveRecord::Base
has_many :enrollments
has_many :students, :through => :enrollments
end
class Enrollment < ActiveRecord::Base
belongs_to :student
belongs_to :course
end
我目前在我的模型中有这个关联,我使用的是accepts_nested_attributes_for,但特别是ryanB的嵌套形式https://github.com/ryanb/nested_form 现在我正在创建一个学生形式并添加课程,我创建学生A,名字:Ryan,然后创建课程:数学。现在我要创建学生B,名字:弗兰克和课程:数学。现在我的课程数据库正在创建两个数学行,但我希望它只有一个,这样我就可以参考数学课程中的所有学生。我该如何做到这一点?
课程db现在看起来像这样
id: 1, name: Math
id: 2, name: Math
这就是我的注册数据库的样子:
student_id: 1, course_id: 1
student_id: 2, course_id: 2
但我想
student_id: 1, course_id: 1
student_id: 2, course_id: 1
答案 0 :(得分:1)
如果真的应该只有一个“数学”课程,我建议在课程模型上使用validates_uniqueness_of:name。当您创建新学生并希望将其附加到(仅)“数学”课程时,请执行Course.find_by_name(“Math”)。students.create(:name =&gt;“Frank”)。