Rails3:查找具有关系但按特定值排除某些关系的记录

时间:2013-11-25 20:24:43

标签: ruby-on-rails-3 activerecord

你有两个型号(Rails3)

阿姨 朋友

哪里

  

阿姨:has_many =>朋友

  

朋友:belongs_to =>阿姨

现在,我希望得到所有与朋友X无关的阿姨

我尝试过类似的事情:

  

Aunt.includes(:friends).where('friends.id!=?',X)

但它不起作用。

PS:我还需要包含没有任何朋友关联的阿姨。

这是:

的输出
@results = Aunt.custom(true).select('aunts.id, aunts.goal').joins("LEFT OUTER JOIN friends r ON aunts.id = r.aunt_id").where('r.other_value != ? or r.id is NULL', 4259 ).ordered_by_status_creation.select('aunts.id, aunts.goal')
  

SELECT aunts.id,aunts.goal FROM aunts LEFT OUTER JOIN friends r ON   aunts.id = r.aunt_id WHERE auntsdeleted_at IS NULL AND   leadstype IN('MyType')AND(is_custom = 1)AND(r.another_value   != 4259或r.id为NULL)ORDER BY status desc,aunts.id desc

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我认为你需要这样的东西:

Aunt.joins("LEFT OUTER JOIN friends ON aunts.id = friends.friend_id").where('friends.id != ? or friends.id is NULL', X ).select

答案 1 :(得分:0)

你可以使用范围如下

范围:without_house,lambda {| param |帕拉姆? {:conditions => [“related_id!=?”,param.id]}:{}}