0

我需要获取不在 :through 条件下的记录。

我有 3 张桌子:

class A < ActiveRecord::Base
  has_many :B_A
  has_many :B, through: :B_A
end
class B < ActiveRecord::Base
  has_many :B_A
  has_many :A, through: :B_A
end
class BA < ActiveRecord::Base
  belongs_to :A
  belongs_to :B
end

我将所有 A 链接到特定 B,listOfA = B.A但我还需要获取所有 A 而不是任何 B。我该怎么办?

4

1 回答 1

0

好的,我有两个条件可以放入我的联接查询中。我的 MySql 是:

select a.`id`, a.`label`
from `A` a
left join `BA` ba
on a.`id` = ba.`a`
where a.`uid`='userId'
and ba.`a` is null

我的 activeRecord 现在是:

A.select(['A.id', :label])
  .joins('left outer join B_A on B_A.a_id = A.id')
  .where({ user_id: current_user.id, "B_A.a_id" => nil })

我有我所有的 A 不是在 BA

于 2013-08-25T16:40:52.040 回答