我有两个ActiveRecord模型:
class Class < ActiveRecord::Base
(...)
has_many :class_to_teacher, dependent: :destroy
end
class Teacher < ActiveRecord::Base
has_many :classes,
through: :class_to_teacher
end
class ClassToTeacher < ActiveRecord::Base
belongs_to :klass
belongs_to :teacher
end
当我删除Class I时,不要完全删除它,只有我从ClassToTeacher记录中删除记录。我需要保留这些数据:
def leave(class, teacher)
teacher.klasses.delete(class)
end
现在我必须得到所有相关的类(包含ClassToTeacher中记录的类)。怎么做到最好?谢谢你的所有答案。
答案 0 :(得分:0)
你应该尝试类似的东西:
Class.includes(:class_to_teacher).where('class_to_teacher.id is not null').references(:class_to_teacher).all
假设你有一个&#39; id&#39;数据库中ClassToTeacher的字段
答案 1 :(得分:0)
我想有很多方法可以实现,但最简单的方法可能就是:
Klass.where(id: KlassToTeacher.select(:klass_id))
这将导致带有子查询的单个查询。请注意,我更改了模型的名称,因为已经在Ruby中定义了Class
,而您只是在寻找麻烦。