系,课程,学生班。
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
部门和课程有依赖删除foreign_key约束。 删除部门后,必须删除其所有课程。但是,如果课程有学生分配,则该课程不能删除。这意味着,部门又无法删除。
现在,我需要查找是否可以删除部门,以便在索引页面中显示删除链接。有没有办法在不查询所有课程的情况下找到答案,检查是否有学生分配?问题是,我必须展示数百个部门。为了显示每个删除链接,我需要查询很多。
答案 0 :(得分:0)
处理这种情况最友好的方式可能是只显示删除键并添加一个before_destroy ActiveRecord Callback,它可以检查部门是否可以被销毁。
请记住,如果您真的只想显示可以删除的删除链接,我建议您将检查分为Course类和Department类中的方法,这是遵循最佳实践Law of Demeter
答案 1 :(得分:0)
我们通过一直显示destroy链接来解决它。点击链接时,将触发对删除的ajax调用。如果数据库具有外键约束,我们将捕获它并向用户显示它不能被删除。
因此任何数据库查询都无需检查约束......