数据库中存在Ruby
和C
标记。
Tag.where(:name => ["Ruby", "C", "foo", "bar"]).map(&:name)
返回:["Ruby", "C"]
。
如何返回不在db中的标记。所以相反。即["foo", "bar"]
寻找优雅的Ruby one liner解决方案。如果可能的话。
答案 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次查询。