Module: Enumerable

Defined in:
lib/groupdate/enumerable.rb

Instance Method Summary collapse

Instance Method Details

#group_by_period(*args, &block) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/groupdate/enumerable.rb', line 14

def group_by_period(*args, &block)
  if block || !respond_to?(:scoping)
    period = args[0]
    options = args[1] || {}

    options = options.dup
    # to_sym is unsafe on user input, so convert to strings
    permitted_periods = ((options.delete(:permit) || Groupdate::PERIODS).map(&:to_sym) & Groupdate::PERIODS).map(&:to_s)
    if permitted_periods.include?(period.to_s)
      send("group_by_#{period}", options, &block)
    else
      raise ArgumentError, "Unpermitted period"
    end
  else
    scoping { @klass.send(:group_by_period, *args, &block) }
  end
end