Ich habe ein Servicemodell mit 3 Schlüsselwörtern. Und ich habe ein Verkaufsmodell, das die Anzahl der Dienstleistungen zählt, die für Kunden erbracht werden. Ich versuche, einen statistischen Bericht zu erstellen, und was möchte ich fragen, wie ich die Anzahl der von einem Dienst verkauften Dienste am besten ermitteln kann?
Zum Beispiel habe ich Service A, der 10 Mal verkauft wurde, Service B, der 20 Mal verkauft wurde usw. Wie erhalte ich diese Werte einfach und programmgesteuert?
Ich möchte nicht einzeln nach dem Verkaufsmodell für jede Serviceinstanz suchen.
Was ist der beste Weg, um es zu tun?
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
Jeder Service hat einen Preis, und jeder Verkauf hat ein total_price-Attribut, das von der Anzahl der in diesem bestimmten Verkauf verkauften Services abhängt.
Kannst du das versuchen? Hier gehe ich davon aus, dass der Umsatz pro Service die Häufigkeit ist, mit der der Service verkauft wird.
Service.includes(:sales).group("services.name").count("sales")
Dies sollte zu einem Ergebnis führen wie:
service_posts = {"service1"=>7, "service2"=>2, "service3"=>0, "service4"=>3, "service5"=>4}
Wenn Sie die Preise erhalten möchten, müssen Sie Folgendes tun:
service_prices = {}
Service.includes(:sales).each do |service|
service_prices[service.name] = service_posts[service.name] * service.price
end
service_prices enthält also die Preise für jeden Service.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen