如何提取不在数据库中的标记?

时间:2011-08-05 17:07:58

标签: ruby ruby-on-rails-3

数据库中存在RubyC标记。

Tag.where(:name => ["Ruby", "C", "foo", "bar"]).map(&:name) 

返回:["Ruby", "C"]

如何返回不在db中的标记。所以相反。即["foo", "bar"]

寻找优雅的Ruby one liner解决方案。如果可能的话。

2 个答案:

答案 0 :(得分:2)

search_tags = ["Ruby", "C", "foo", "bar"]
not_found = search_tags - Tag.where(:name => search_tags).map(&:name)

快速回答主要是复制/粘贴您已有的内容,根据需要进行调整。

答案 1 :(得分:1)

我认为以下内容会在一行中完成:

["Ruby", "C", "foo", "bar"].reject { |name| Tag.where(:name => name) }

但它并不快,因为它需要4次查询。