From 0a987deca2ff0075fc9e457f168a16e72b24438b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Villeneuve?= Date: Mon, 11 Dec 2023 13:10:54 +0100 Subject: [PATCH] Better way of handling model based counters --- lib/statisfy/model.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/statisfy/model.rb b/lib/statisfy/model.rb index bfc5c6a..879ea06 100644 --- a/lib/statisfy/model.rb +++ b/lib/statisfy/model.rb @@ -11,24 +11,25 @@ def self.included(klass) module ClassMethods def count(params) - a_bloc = params.fetch(:scopes, nil) || params.fetch(:uniq_by, nil) || params.fetch(:if, nil) - source = a_bloc&.source + raise ArgumentError, "Missing :as parameter" unless params[:as] class_name = params[:as].to_s.camelize eval <<-RUBY, binding, __FILE__, __LINE__ + 1 class ::Statisfy::#{class_name} include Statisfy::Counter - - #{source || "count(#{params})"} end RUBY + class_eval <<-RUBY, __FILE__, __LINE__ + 1 def self.#{params[:as]} ::Statisfy::#{class_name} end RUBY + + "::Statisfy::#{class_name}".constantize.send(__method__, **params) end + alias aggregate count end end end