使用空模型请求查询

时间:2014-02-10 11:56:46

标签: ruby-on-rails activerecord ruby-on-rails-4

我有2个模型(收藏和兴趣),有2个链接表(收集和有趣)。 我想选择目标利益不是的所有收藏品。

但是根据我的实际查询,它不会选择空集合:

Collection.joins("LEFT JOIN `interestings` ON `interestings`.`collection_id` = `collections`.`id` LEFT JOIN `interests` ON `interests`.`id` = `interestings`.`interest_id`").where.not(interests: {id: 1}")

1 个答案:

答案 0 :(得分:0)

这应该按预期工作/但我没有测试过;)/

Collection.where('id not in ?', Interesting.where(interest_id: 1).pluck(:collection_id))

我不确定“不在”列表的限制,但是如果你的表太大了,你可以避免通过Ruby数组传递数据并使用纯SQL:

Collection.find_by_sql('SELECT * FROM collections WHERE collection_id NOT IN (SELECT collection_id FROM interestings WHERE interest_id = 1)')