Найти запись в существующем наборе результатов - PullRequest
2 голосов
/ 24 августа 2011

Моя настройка: Rails 3.0.9, Ruby 1.9.2

Допустим, я нашел все по модели

@projects = Project.all

Теперь я хотел бы найти отдельную запись в пределахНабор результатов только что вернулся без необходимости повторного вызова SQL.Эта строка кода запускает новый вызов SQL, я хотел бы, если возможно, избегать его, полагает, что должен быть способ получить запись из набора результатов

@projects.find(1)

Ответы [ 2 ]

5 голосов
/ 24 августа 2011

@projects - это просто массив объектов Project, теперь вы можете просто использовать любой оператор ruby, который работает с массивами, чтобы найти нужный объект.

Например:

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

совпадает с вашим примером.

Вы также можете использовать что-то вроде:

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

если бы вы знали, что можете сопоставить несколько элементов.

3 голосов
/ 24 августа 2011

Я предпочитаю @projects.detect { |item| item.foo == 3 } вместо @projects.select { |item| item.foo == 3 }.first, потому что он останавливает итерацию при поиске первого совпадения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...