У меня есть дефект модели с атрибутом found_in. У меня есть hash test_phases, чьими ключами являются различные этапы тестирования, а значение - массив значений found_in. Есть ли способ сгруппировать Дефект с помощью test_phases? что-то вроде Defect.group_by (? test_phases) ?.Ruby Rails 3.2 Как group_by хешем массива атрибутов?
кода я использую некрасиво
defects = {}
test_phases.each do |test_phase, found_ins|
defects[test_phase] ||= Defect.where(found_in: found_ins].all
end
Итерация по хэш может привести к п SQL запросов, где n - количество ключей в test_phases. Я надеялся, что есть способ сделать 1 sql-запрос, так же как Defect.select ('found_in', count (id) в качестве отставаний) .group ('found_in'). – user2371769
Да, это вызовет N запросов. Не совсем уверен, что в чистом AR есть способ сделать это с помощью 1 запроса. – tokland
Есть ли способ передать массив ключей в хэш? Например, будет ли это выполнимо: errors = Defect.select ('found_in', count (id) как backlogs.group ('found_in'). Test_phases.each do | test_phase, found_in_values | test_phase_backlogs = errors [found_in_values]? – user2371769