Предположим, у меня есть следующие модели:
class Item
# (name, price, location, quantity)
has_many :purchases
end
class Purchase
has_many :items
belongs_to :person
end
class Person
# (name, age)
has_many :purchases
end
Мне нужно найти все уникальные предметы с именем "cd", купленные человеком с именем "bob"
Тогда, на мой взгляд, мне нужно:
@items
для хранения уникальных записей
@items.count
чтобы вернуть число
доступ ко всем атрибутам каждого элемента при цикле:
<% @items.each do |i| %>
<%= "#{i.name}, #{i.locatiton}, #{i.quantity}" %>
<% end %>
@ элементов, которые должны быть ActiveRecord :: Relation (чтобы я мог разбивать на страницы)
Мой запрос до сих пор выглядит примерно так:
@items = Item.joins(:purchase => :person).where('person.name' => 'bob')
оставляя @items как есть проблема с дублирующимися элементами
Что я пробовал:
1) @items.uniq
удаляет дубликаты, но возвращает массив, и мне нужен ActiveRecord :: Relation
2) @items.select('distinct(items.name)')
удаляет дубликаты, но возвращает отношение, содержащее только item.name, и мне нужны все атрибуты
3) @items.group('items.name')
удаляет дубликаты и возвращает отношение, но метод count возвращает OrderedHash, а не число
да, я могу посчитать ключи, но у меня есть те же представления для других отношений, которые возвращают число при вызове метода count для отношения.
Я действительно не знаю, что еще попробовать, есть предложения?