如何通过匹配字符串获取记录数
How to get number of records by matching a string
我有一个包含 3 个关键字的服务模型。而且,我有一个销售模型,计算为客户提供的服务数量。我正在尝试做一个统计报告,我想问的是获得服务销售的服务数量的最佳方法是什么?
例如,我有售出 10 次的服务 A,售出 20 次的服务 B 等。如何以编程方式轻松获取这些值?
我不想单独去搜索每个服务实例的销售模型。
最好的解决方法是什么?
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 属性,具体取决于该特定销售中售出的服务数量。
你能试试这个吗?在这里,我假设每项服务的销售额是服务售出的次数。
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 包含每项服务的价格。
Service.where("your where clause").sales.pluck(:total_price).inject(:+) 这将给出所有销售额的总和 total_price。然后除以销售底价。
我有一个包含 3 个关键字的服务模型。而且,我有一个销售模型,计算为客户提供的服务数量。我正在尝试做一个统计报告,我想问的是获得服务销售的服务数量的最佳方法是什么?
例如,我有售出 10 次的服务 A,售出 20 次的服务 B 等。如何以编程方式轻松获取这些值?
我不想单独去搜索每个服务实例的销售模型。
最好的解决方法是什么?
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 属性,具体取决于该特定销售中售出的服务数量。
你能试试这个吗?在这里,我假设每项服务的销售额是服务售出的次数。
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 包含每项服务的价格。
Service.where("your where clause").sales.pluck(:total_price).inject(:+) 这将给出所有销售额的总和 total_price。然后除以销售底价。