После find () поддерживает ли ActiveRecord доступ / поиск в строке памяти по определенному значению поля (поиск BESIDES с использованием первичного ключа)? - PullRequest
1 голос
/ 26 июня 2010

Во вселенной .Net я могу использовать произвольный оператор SELECT и загружать много строк в объект DataTable.Затем я могу найти различные строки данных, используя различные критерии поля (Имя = «Джек», Возраст = 34 и т. Д.).

В Ruby on Rails, после этого для загрузки всех сотрудников в память

rs = Employee.find(:all)

Я хочу искать строки на основе произвольных критериев.

row = rs.seek(:name => 'Jack')

ActiveRow поддерживает это?Кажется, я ничего не могу найти, или я не использую правильную терминологию.

Если нет, мне придется пройтись по всем строкам и построить свои собственные хеш-таблицы.

Ответы [ 2 ]

2 голосов
/ 27 июня 2010

Предполагая, что у вас есть действительно веская причина для извлечения всех данных и последующей их фильтрации, в отличие от использования динамических искателей или областей Rails.

ActiveRecord find возвращает массив, как другие прокомментировали выше.Вы были очень близки, но вам нужен метод Array find (определенный в module Enumerable )

all_employees = Employee.find(:all)

jack = all_employees.find { |employee| employee.name == 'Jack' }
2 голосов
/ 26 июня 2010
Employee.find(:all)

вернет массив экземпляров ActiveRecord, поэтому вы можете либо найти в массиве соответствующие записи, либо сделать что-то вроде этого:

row = Employee.find_by_name('Jack')

или

rows = Employee.find_all_by_name('Jack')

для выбора интересующих вас строк.

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