我需要在两个模型之间找到记录。
class Report
has_and_belongs_to_many :groups
end
class Group
has_and_belongs_to_many :reports
end
和join_table - reports_groups
我有一组我有权访问的组ID,例如[1, 2]
。
我需要查找包含我可以访问的组的报告,只有它们。
If report has groups list like: [1], [2], [1,2] it is OK.
If report has - [1,2,3] - skip it.
If - [3,4] - skip it to.
我只需要允许使用我的群组的报告。
答案 0 :(得分:0)
仔细检查联接表的名称。
Report.where(
'NOT EXISTS(SELECT * FROM reports_groups WHERE report_id = reports.id AND group_id IN (?))',
[1, 2],
)
答案 1 :(得分:0)
为什么不在arel_table
建筑物
accessible_group_ids = [1, 2, ..., n]
Report.joins(:groups).where(Group.arel_table[:id].in(accessible_group_ids)).distinct