合并两个find_bys的结果

时间:2011-05-31 20:41:49

标签: ruby-on-rails ruby

我有代码可以获得两个发现的结果:

results1 = firstModel.find_by_id(id1)

results2 = secondModel.find_by_id(id2)

allResults = results1& results2#合并结果,删除重复项

#我相信find_by会返回一个数组,但是,有点绝望,我也试过了,allResults = results1.merge(results2)

然而,两者兼而有之,我得到'未定义的方法'(分别为'&'或'merge')

我很感激为什么,谢谢。

3 个答案:

答案 0 :(得分:4)

  

我相信find_by会返回一个数组,但是,有点绝望,我也试过了,allResults = results1.merge(results2)

     

然而,两者兼而有之,我得到'未定义的方法'(分别为'&'或'merge')

find_by_id将返回单个对象,而不是集合。

要返回集合,您可以执行以下操作:

MyModel.find_all_by_name("hello world")

然后你可以对此进行合并。

答案 1 :(得分:2)

使用Rails 3,您可以执行以下操作:

firstModel.where(:id => id1) | secondModel.where(:id => id2)
# => [#<FirstModel id: 1, ....>, #<SecondModel id: 1, ....>]

答案 2 :(得分:1)

如果results1和results2是数组,那么:

allResults = (results1 + results2).uniq

文档:http://www.ruby-doc.org/core/classes/Array.html