在 rails 中,如何获取模型的所有参数 与其他模型连接后,获取一个 ActiveRecord::Relation 哪个计数的方法返回一个数字



让我们假设我有以下模型:

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 %>
    
  • @要成为ActiveRecord::关系的项目(这样我就可以分页)

到目前为止,我的查询如下:

@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方法时返回数字的其他关系,我有相同的视图。

我真的不知道还能尝试什么,有什么建议吗?

我想你可以做:

@items.select("DISTINCT(`items`.`name`), `items`.*")

并使用你需要的物品。你试过了吗?

最新更新