在使用ActiveRecord的Rails 3中,我有2个模型(用户和任务)。这些模型与has_many:通过另一个模型上的关联,分配链接在一起。如何找到与特定用户无关的所有任务?
class User < ActiveRecord::Base
has_many :assignments
has_many :tasks, :through => :assignments
end
class Tasks < ActiveRecord::Base
has_many :assignments
has_many :users, :through => :assignments
end
class Assignments < ActiveRecord::Base
belongs_to :users
belongs_to :tasks
end
答案 0 :(得分:4)
短暂的甜蜜:
Task.all - user.tasks
避免加载用户任务:
Task.where('id not in (?)', user.task_ids)
我无法弄清楚如何在AR中使用外部联接。
答案 1 :(得分:3)
我将假设您希望这些任务没有任何关联用户,而不是特别是与用户无关。
Tasks.joins('left outer join assignments on assignments.task_id = tasks.id').where('assignments.* is null')