获取除其他数据外的相关数据

时间:2014-05-08 11:00:06

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

Word有一个自我联接表,word1 is related with word2, word3, word4 project1 has many words并包含project1 has: word1, word2

字样

我如何获得words的所有相关word1除了那些已经分配给project1的内容,在这种情况下' word2'

word1: word3, word4的预期输出(以下是我所做的,是否有更好的解决方案?)

related = project.words.where(id: self.related_words.map(&:id)).map(&:id)
self.related_words.where.not(id: related)

1 个答案:

答案 0 :(得分:2)

鉴于您当前的解决方案有效,我会使用pluck

来改进它
related = project.words.where(id: self.related_words.pluck(:id)).pluck(:id)
self.related_words.where.not(id: related)

为什么呢?因为pluck用作数据库查询,因此与Ruby map相比更快,请参阅文档:http://apidock.com/rails/ActiveRecord/Calculations/pluck