我的设置:Rails 3.0.9,Ruby 1.9.2
假设我在模型上找到了所有内容
@projects = Project.all
现在我想在结果集中找到一条单独的记录,而不必再进行另一次SQL调用。这行代码触发了一个新的SQL调用,我想尽可能避免它,数字应该有一种从结果集中获取记录的方法
@projects.find(1)
答案 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
,因为它会在找到第一个匹配时停止迭代。