ruby-on-rails - 获取组的 Activerecord 计数(Rails 4.2)
问题描述
我正在尝试处理按类别组织的一组数据;下面的 ActiveRecord 查询是我用来布置表格的内容(类别标题,然后是产品信息(出于性能原因,它已在视图中完成,尽可能多地将逻辑放入模型中。)
我一直试图报告两件事:
- 按产品数量循环遍历最常用类别的有序列表;和
- 报告这些类别中的产品数量。
我已经尝试实施我在这里找到的内容,但很难被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
每个产品都分配给一个类别 - 关联是仓库 > 标签 > 产品 > category_assignment > 类别。
#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| %>
推荐阅读
- javascript - Pdfmake Javascript数组问题
- javascript - 可同时过滤和排序 React Table
- python - 如何删除一个列表中存在于另一个列表中的组合?
- python - 如何使用 vlc 库更新 pysimplegui 的窗口图像元素?
- quarkus - 如何在 Quarkus 扩展中获取包含自定义注释的类
- angular - 在 GitHub 页面上部署了我的 Angular 应用程序,但在控制台中的网站上出现错误
- algorithm - BFS 和 DFS 搜索算法如何在“相同优先级”的节点之间进行选择?
- google-apps-script - 我应该使用什么 oauthScope 以便 setDescription() 不会引发“Action not allowed”异常?
- java - 为什么我们在Java中调用Array.length方法时不用括号()?
- javascript - 是否可以使用 javascript 为提交输入按钮提供 onsubmit 属性?