所以我有两个单独的查询:
tagged_items = Item.tagged_with(params[:s], :on => :tags)
searched_items = Item.find(:all, :conditions => ["MATCH(title) AGAINST (? IN BOOLEAN MODE)", "*#{params[:s]}*"])
第一个tagged_items
正在使用acts_as_taggable_on
插件查找标记为XYZ的所有项目。
第二个searched_items
用于在items
表中搜索搜索字词。
那么,我如何组合(并避免重复)这两个结果?
答案 0 :(得分:2)
查看named_scope。第二个查询可以很容易地转换为named_scope,我不确定第一个查询,但是如果你可以使用find重写它,那么你就回家了。
http://api.rubyonrails.org/classes/ActiveRecord/NamedScope/ClassMethods.html
答案 1 :(得分:1)
items = (tagged_items + searched_items).unique
但如果你能用单一查询获取它们会好得多。
答案 2 :(得分:0)
这种方法......
@items = tagged_items | searched_items
如果您希望在View中使用这些查询的结果,而不是使用数组,那么...会更有意义,并且也可以完成重复数据删除。