Module: Degu::HasSet

Extended by:
ActiveSupport::Concern
Included in:
ActiveRecord::Base
Defined in:
lib/degu/has_set.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#has_set_coerce_argument_value(enum_class, argument_value) ⇒ Object



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/degu/has_set.rb', line 83

def has_set_coerce_argument_value(enum_class, argument_value)
  invalid_set_elements = []
  set_elements =
    if String === argument_value
      argument_value.split(',').map(&:strip)
    else
      Array(argument_value)
    end.map do |set_element|
      if result = enum_class[set_element]
        result
      else
        invalid_set_elements << set_element
        nil
      end
    end
  invalid_set_elements.empty? or
    raise ArgumentError, "element #{argument_value.inspect} contains invalid elements: #{invalid_set_elements.inspect}"
  set_elements
end