在我的Rails应用中,我通过连接表在两个模型Teacher
和Course
之间建立了多对多的关系。我想创建某种验证,其中无法与至少一位教师相关联创建课程(假设我们在添加新课程时所有教师都在数据库中)。如果这是一对多关系,这很容易做到,但是由于多对多关系,我们需要保存course
才能将其与teachers
关联起来。< / p>
我的初步计划是覆盖create
模型中的Rails Course
方法以允许传递teacher_ids
并在保存{{1}之前验证至少一个teacher_id
的存在但是,我不确定这是一个不错的方法。
答案 0 :(得分:7)
你应该写custom validation,这很容易(请适应你的代码):
class Course < ActiveRecord::Base
has_and_belongs_to_many :teachers
validate :has_one_teacher_at_least
def has_one_teacher_at_least
if teachers.empty?
errors.add(:teachers, "need one teacher at least")
end
end
end
这样,如果与一位老师相关联,你就只能创建课程:
teacher = Teacher.create()
course = Course.new()
course.teachers << teacher
course.save!