我有一个包含3个关键字的服务模型。而且,我有一个销售模型,计算服务于客户的服务数量。我正在尝试制作一份统计报告以及我想问的是获得服务销售服务数量的最佳方法是什么?
例如,我有服务A出售10次,服务B出售20次等。我如何轻松地以编程方式获得这些价值?
我不想单独去搜索每个服务实例的销售模型。
最好的方法是什么?
class Sale < ApplicationRecord
has_many :sale_services
has_many :services, :through => :sale_services
end
class Service < ApplicationRecord
has_many :sale_services
has_many :sales, through: :sale_services
end
class SaleService < ApplicationRecord
belongs_to :sale, optional: true
belongs_to :service, optional: true
end
每个服务都有一个价格,每个销售都有一个total_price属性,具体取决于该特定销售中销售的服务数量。
答案 0 :(得分:1)
Service.includes(:sales).group("services.name").count("sales")
这应该给出类似的结果:
service_posts = {"service1"=>7, "service2"=>2, "service3"=>0, "service4"=>3, "service5"=>4}
如果您想获得价格而不是您需要的价格:
service_prices = {}
Service.includes(:sales).each do |service|
service_prices[service.name] = service_posts[service.name] * service.price
end
所以service_prices包含每项服务的价格。
答案 1 :(得分:0)
Service.where(&#34;你的where子句&#34;)。sales.pluck(:total_price).inject(:+)这将给出所有销售额total_price的总和。然后除以销售基价。