在现有结果集中查找记录

Bob*_*Bob 2 activerecord ruby-on-rails ruby-on-rails-3

我的设置:Rails 3.0.9,Ruby 1.9.2

假设我在模型上全部找到了

@projects = Project.all
Run Code Online (Sandbox Code Playgroud)

现在,我想在刚返回的结果集中找到一条单独的记录,而不必进行另一个SQL调用。这行代码触发了一个新的SQL调用,如果可能的话,我想避免这样做,因为应该有一种方法可以从结果集中获取记录。

@projects.find(1)
Run Code Online (Sandbox Code Playgroud)

Khr*_*nos 5

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

例如:

@projects.first {|item| item.id == 1} 
Run Code Online (Sandbox Code Playgroud)

与您的示例相同。

您还可以使用类似:

 @projects.select {|item| item.foo == 3} 
Run Code Online (Sandbox Code Playgroud)

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