【发布时间】:2011-01-22 17:42:30
【问题描述】:
在带有 ActiveRecord 的 Rails 3 中,我有 2 个模型(用户和任务)。这些模型通过一个 has_many 链接在一起:通过在另一个模型上的关联,Assignments。如何找到与特定用户无关的所有任务?
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
【问题讨论】:
-
您真的在寻找 SQL 答案吗?如果没有,也许您可以考虑删除该标签。否则,我可以为您提供执行此操作的 SQL。
-
第二次 emtucifor 的评论。 SQL 是微不足道的。你想要 SQL 吗?
-
这不是我想要的,但我认为这可能是唯一的方法。所以是的,我会使用 SQL。
-
非sql解决方案也很简单:
Task.all - user.tasks -
或者:
Task.where('id not in (?)', user.task_ids)
标签: sql ruby-on-rails activerecord