假设我有以下模型:
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
我需要找到名为“bob”的人购买的所有名为“cd”的独特物品
然后在我看来,我需要:
@items
包含唯一记录@items.count
返回一个数字循环时访问每个项目的所有属性:
<% @items.each do |i| %> <%= "#{i.name}, #{i.locatiton}, #{i.quantity}" %> <% end %>
@items 成为 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 方法时返回一个数字的其他关系,我有相同的视图。
我真的不知道还有什么可以尝试的,有什么建议吗?