在我的 Rails 应用程序中,我有 2 个模型之间的多对多关系 Teacher
和 Course
通过连接表。我想创建某种验证,其中不能在没有与至少一名教师相关联的情况下创建类(class)(假设在我们添加新类(class)时所有教师都在数据库中)。如果这是一对多关系,这很容易做到,但是对于多对多关系,我们需要保存 course
在我们将其与 teachers
相关联之前.
我最初的计划是覆盖 Rails create
Course
中的方法允许通过的模型 teacher_ids
并验证至少一个 teacher_id
的存在在保存 course
之前,但我不确定这是一个很好的方法。
最佳答案
你应该写 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
这样,您将只能在与一位教师相关联的情况下创建类(class),如下所示:
teacher = Teacher.create()
course = Course.new()
course.teachers << teacher
course.save!
关于ruby-on-rails - 验证多对多关系中关联的存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24479474/