Module: FormalWear::InstanceMethods

Defined in:
lib/formal_wear/instance_methods.rb

Instance Method Summary collapse

Instance Method Details

#attributesObject Also known as: to_h



19
20
21
22
23
24
# File 'lib/formal_wear/instance_methods.rb', line 19

def attributes
  {}.tap do |h|
    h.merge!(required_attributes: required_attributes) if required_attributes
    h.merge!(optional_attributes: optional_attributes) if optional_attributes
  end
end

#initialize(options = {}) ⇒ Object

Start the configuration process



6
7
8
9
# File 'lib/formal_wear/instance_methods.rb', line 6

def initialize(options = {})
  set_sources(options)
  update_sources
end

#optional_attributesObject



15
16
17
# File 'lib/formal_wear/instance_methods.rb', line 15

def optional_attributes
  sanitize_and_fill_attributes(optional_fields)
end

#optional_fieldsObject



32
33
34
# File 'lib/formal_wear/instance_methods.rb', line 32

def optional_fields
  @@optional_fields
end

#required_attributesObject



11
12
13
# File 'lib/formal_wear/instance_methods.rb', line 11

def required_attributes
  sanitize_and_fill_attributes(required_fields)
end

#required_fieldsObject

Return the list of required fields for this configurator



28
29
30
# File 'lib/formal_wear/instance_methods.rb', line 28

def required_fields
  @@required_fields
end

#required_fields_with_custom_storesObject



40
41
42
# File 'lib/formal_wear/instance_methods.rb', line 40

def required_fields_with_custom_stores
  required_fields.select { |f,o| custom_store?(o) }
end

#required_fields_without_custom_storesObject



36
37
38
# File 'lib/formal_wear/instance_methods.rb', line 36

def required_fields_without_custom_stores
  required_fields.reject { |f,o| custom_store?(o) }
end

#saveObject



60
61
62
63
64
65
# File 'lib/formal_wear/instance_methods.rb', line 60

def save
  return false unless valid?
  saving do
    required_fields.each { |field, options| set_field(field, options) }
  end
end

#update(attrs) ⇒ Object

Raises:

  • (ArgumentError)


44
45
46
47
48
49
# File 'lib/formal_wear/instance_methods.rb', line 44

def update(attrs)
  raise ArgumentError, "update requires a Hash" unless attrs.is_a?(Hash)
  attrs.each do |field, value|
    send(:"#{field}=", value) if respond_to?(field)
  end
end

#update!(attrs) ⇒ Object



51
52
53
54
# File 'lib/formal_wear/instance_methods.rb', line 51

def update!(attrs)
  update(attrs)
  save if valid?
end

#valid?Boolean



56
57
58
# File 'lib/formal_wear/instance_methods.rb', line 56

def valid?
  required_fields.keys.all? { |k| self.send(k).present? }
end