rails - 如何从另一个查询中减去一个查询?

jun*_*nky 3 ruby sql activerecord ruby-on-rails

我想做这样的事情:

puts Room.find(1,2,3) - Room.find(1,2)
Run Code Online (Sandbox Code Playgroud)

所以它只Room.find(3)返回那个SQL记录而不是Room.find(1,2,3)给我的3条记录

soc*_*onk 6

我认为这会更有效率:

first_id_list = [1, 2, 3]
second_id_list = [1, 2]
Room.find(first_id_list - second_id_list)
Run Code Online (Sandbox Code Playgroud)

这样,你搜索你真正希望在你的查询中的id,而不是获取不需要的行,然后实例化一堆Room对象然后你迅速忽略但Ruby仍然需要垃圾收集.