Module: AttributeEnums::Common

Defined in:
lib/attribute_enums/common.rb

Instance Method Summary collapse

Instance Method Details

#attribute_enums(attribute_name, options = {}) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/attribute_enums/common.rb', line 4

def attribute_enums(attribute_name, options={})
  _ae_init_instance_variables

  @_ae_attribute_name = attribute_name.to_s

  @_ae_in = options.has_key?(:in) ? Array(options.delete(:in)) : []
  @_ae_boolean = options.has_key?(:boolean) ? options.delete(:boolean) : false
  @_ae_default = options.has_key?(:default) ? options.delete(:default) : nil
  @_ae_ask_methods = options.has_key?(:ask_methods) ? options.delete(:ask_methods) : false
  @_ae_scopeds = options.has_key?(:scopeds) ? options.delete(:scopeds) : false
  @_ae_validate = options.has_key?(:validate) ? options.delete(:validate) : false
  @_ae_i18n = options.has_key?(:i18n) ? options.delete(:i18n) : false


  # build _in
  if @_ae_boolean
    @_ae_in = [true, false]
    @_ae_inclusion = @_ae_in
  else
    return if @_ae_in.empty?
    @_ae_in = @_ae_in.map{|x| x.to_s.to_sym}.uniq.flatten.delete_if{|y| y.empty?}
    return if @_ae_in.empty?
    @_ae_inclusion = @_ae_in.map{|x| [x, x.to_s]}.flatten
  end

  unless @_ae_default.nil?
    raise 'default value not match' unless @_ae_inclusion.include?(@_ae_default)
  end

  _ae_set_default unless @_ae_default.nil?
  if @_ae_scopeds
    if @_ae_boolean
      _ae_set_boolean_scopeds
    else
      _ae_set_string_scopeds
    end
  end

  
  if @_ae_boolean
    _attribute_name_set_boolean_values_method
    _attribute_name_set_boolean_text_method
  else
    _attribute_name_set_string_values_method
    _attribute_name_set_string_text_method
  end
  

  unless @_ae_boolean
    _ae_set_string_ask_methods if @_ae_ask_methods
    _attribute_name_set_string_validate if @_ae_validate
  end

  _ae_remove_instance_variables
end