Mysql Rails检查是否可以删除具有外键约束的对象

Mysql Rails检查是否可以删除具有外键约束的对象,mysql,sql,ruby-on-rails,foreign-key-relationship,Mysql,Sql,Ruby On Rails,Foreign Key Relationship,系、课程、学生班 class Department < ActiveRecord::Base has_many :courses end class Course < ActiveRecord::Base belongs_to :department has_many :students end class Student < ActiveRecord::Base belongs_to :course end 班级部门

系、课程、学生班

class Department < ActiveRecord::Base
 has_many :courses
end

class Course < ActiveRecord::Base
 belongs_to :department
 has_many :students
end

class Student < ActiveRecord::Base
 belongs_to :course
end
班级部门
部门和课程具有相关的删除外键约束。 当一个系被删除时,它的所有课程都必须被删除。但是,如果课程分配了一名学生,则不能删除该课程。也就是说,不能依次删除该部门


现在,我需要找到是否可以删除某个部门,以便在索引页面中显示删除链接。有没有一种方法可以让我在不查询所有课程的情况下找出答案,来检查他们是否分配了学生?问题是,我必须展示数百个部门。对于显示每个删除链接,我需要进行大量查询。

处理这种情况的最有利于性能的方法可能是始终显示delete键,并添加一个before_destroy ActiveRecord回调,该回调可以检查部门是否可以被销毁


请记住,如果您真的只想为那些可以删除的显示删除链接,我建议您将检查分为课程类和部门类的一个方法,按照遵守的最佳实践,我们通过始终显示销毁链接解决了这个问题。。单击该链接时,将触发一个删除的ajax调用。如果数据库有外键约束,我们将捕获它并向用户显示它不能被删除

所以不需要任何db查询来检查约束