diff --git a/lib/groupdate/active_record.rb b/lib/groupdate/active_record.rb index 87d7be8..239d07d 100644 --- a/lib/groupdate/active_record.rb +++ b/lib/groupdate/active_record.rb @@ -1,6 +1,7 @@ require "active_record" require "groupdate/order_hack" require "groupdate/scopes" +require "groupdate/calculations" require "groupdate/series" ActiveRecord::Base.send(:extend, Groupdate::Scopes) diff --git a/lib/groupdate/calculations.rb b/lib/groupdate/calculations.rb new file mode 100644 index 0000000..c7d8a7b --- /dev/null +++ b/lib/groupdate/calculations.rb @@ -0,0 +1,26 @@ +module Groupdate + class Calculations + attr_reader :relation + + def initialize(relation) + @relation = relation + end + + def include?(method) + # https://github.com/rails/rails/blob/master/activerecord/lib/active_record/relation/calculations.rb + ActiveRecord::Calculations.method_defined?(method) || custom_calculations.include?(method) + end + + def custom_calculations + return [] if !model.respond_to?(:groupdate_calculation_methods) + model.groupdate_calculation_methods + end + + private + + def model + return if !relation.respond_to?(:klass) + relation.klass + end + end +end diff --git a/lib/groupdate/series.rb b/lib/groupdate/series.rb index b1c9958..ac11e06 100644 --- a/lib/groupdate/series.rb +++ b/lib/groupdate/series.rb @@ -27,29 +27,4 @@ module Groupdate nil end end - - class Calculations - attr_reader :relation - - def initialize(relation) - @relation = relation - end - - def include?(method) - # https://github.com/rails/rails/blob/master/activerecord/lib/active_record/relation/calculations.rb - ActiveRecord::Calculations.method_defined?(method) || custom_calculations.include?(method) - end - - def custom_calculations - return [] if !model.respond_to?(:groupdate_calculation_methods) - model.groupdate_calculation_methods - end - - private - - def model - return if !relation.respond_to?(:klass) - relation.klass - end - end end diff --git a/test/test_helper.rb b/test/test_helper.rb index 5b3984b..a167b81 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -361,9 +361,9 @@ module TestDatabase # custom model calculation methods def test_custom_model_calculation_method - create_user "2014-05-01", 1 - create_user "2014-05-01", 2 - create_user "2014-05-03", 3 + create_user "2014-05-01" + create_user "2014-05-01" + create_user "2014-05-03" expected = { Date.parse("2014-05-01") => 2, -- libgit2 0.21.0