获取一个组的Activerecord计数(Rails 4.2)



我正在尝试处理一组按类别组织的数据;下面的ActiveRecord查询是我用来布置表格的(类别标题,然后是产品信息(出于性能原因,它是在视图中完成的,尽可能多地为模型添加逻辑(

我一直试图报告两件事:

  1. 按产品数量循环浏览最常用类别的有序列表;以及
  2. 报告这些类别中的产品数量

我已经尝试实现我在这里发现的内容,但在接受count_id时遇到了困难。

以下是我正在使用的内容:

<% @categories.each do |category| %> 
<p><%= category.name %>;</p>
<% category.products.includes(:rfid_tags).joins(:rfid_tags).order(name: :asc).limit(10).each do |product| %>
<p><%= product.name %></p>
<% end %>
<% end %>

类别模型(导出逻辑IRL的这一部分以保持简短(:

def warehouse_product_grouping
self.products.includes(:rfid_tags).joins(:rfid_tags)
end  

Models:
#Warehouse.rb
has_many :tags, as: :location
has_many :products, through: :tags
#rfid_tag.rb
belongs_to product #
#polymorphic
belongs_to :trackable, polymorphic: true
belongs_to :location, polymorphic: true
#Product.rb
has_one :primary_category_assignment
has_many :rfid_tags, as: :trackable

每个产品都被分配到一个类别——关联是仓库>标签>产品>类别分配>类别。

#CategoryAssignment.rb #this is a join table
belongs_to :product, required: true
belongs_to :category, required: true
#Category.rb
has_many :products, through: :category_assignment

"报告产品数量"只需category.products.count即可完成。为了避免N+1查询问题,我建议在使用类别时包括产品:<% @categories.includes(:products).each do |category| %>

最新更新