如何在Rails中组合记录结果?

时间:2010-01-13 16:45:48

标签: ruby-on-rails find

所以我有两个单独的查询:

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表中搜索搜索字词。

那么,我如何组合(并避免重复)这两个结果?

3 个答案:

答案 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中使用这些查询的结果,而不是使用数组,那么

...会更有意义,并且也可以完成重复数据删除。