在现有结果集中查找记录

时间:2011-08-24 18:21:24

标签: ruby-on-rails ruby-on-rails-3 activerecord

我的设置:Rails 3.0.9,Ruby 1.9.2

假设我在模型上找到了所有内容

@projects = Project.all

现在我想在结果集中找到一条单独的记录,而不必再进行另一次SQL调用。这行代码触发了一个新的SQL调用,我想尽可能避免它,数字应该有一种从结果集中获取记录的方法

@projects.find(1)

2 个答案:

答案 0 :(得分:5)

@projects只是一个Project对象数组,现在您可以简单地使用任何运行在数组上的ruby运算符来查找所需的对象。

例如:

@projects.first {|item| item.id == 1} 

与您的示例相同。

您还可以使用以下内容:

 @projects.select {|item| item.foo == 3} 

如果您知道可以匹配多个项目。

答案 1 :(得分:3)

我更喜欢@projects.detect { |item| item.foo == 3 }而不是@projects.select { |item| item.foo == 3 }.first,因为它会在找到第一个匹配时停止迭代。