我在Rails 5中有两个模型并且使用Postgres:
class Sale < ApplicationRecord
attribute :total (among others)
belongs_to :categorys
end
class Category < ApplicationRecord
attritubte :name (among others)
has_many :sales
end
那么如何按类别获得销售组并总计每个类别的销售总额?以及如何在我的视图中显示它(在实例变量中)。例如,我想在我的视图中显示:
CategoryOne:总计$ 3000(结果可能是哈希,但我怎样才能在视图中显示它?
CategoryTwo:总计$ 4000
CategoryThree:总计$ 2200
依旧......
这是正确的rails方式查询(活动记录)?以及如何在视图中显示结果?感谢
答案 0 :(得分:0)
您可以使用ActiveRecord的#sum
来计算类别销售额的合并total
:
category = Category.last
category.sales.sum(:total)
要在视图中呈现销售总额,您可以执行以下操作:
在类别模型中:
# app/models/category.rb
class Category < ApplicationRecord
def sales_total
sales.sum(:total)
end
end
在您的相关控制器操作中:
# app/controllers/categories_controller.rb
@categories = Category.includes(:sales)
并在相应的视图中:
<% @categories.each do |c| %>
<%= "Category #{c.name}: Total $#{c.sales_total} %>
<% end %>
希望这有帮助!
答案 1 :(得分:0)
def sales_total_on(date)
sales.where(date: date).sum(:total)
end
您可以将日期通过请求参数从表单传递给控制器。您可以使用select或datepicker。