Module: FormalWear::InstanceMethods

Defined in:
lib/formal_wear/instance_methods.rb

Instance Method Summary collapse

Instance Method Details

#initialize(primary) ⇒ Object

Start the configuration process



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

def initialize(primary)
  @primary = primary
  update_sources
end

#required_attributesObject



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

def required_attributes
  required_fields.dup.each do |field, options|
    options.slice!(:name, :type)
  end
end

#required_fieldsObject

Return the list of required fields for this configurator



18
19
20
# File 'lib/formal_wear/instance_methods.rb', line 18

def required_fields
  @@required_fields
end

#required_fields_with_custom_storesObject



26
27
28
# File 'lib/formal_wear/instance_methods.rb', line 26

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

#required_fields_without_custom_storesObject



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

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

#saveObject



47
48
49
50
51
52
# File 'lib/formal_wear/instance_methods.rb', line 47

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

#to_hObject



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

def to_h
  {}.merge(required_attributes: required_attributes).tap do |h|
    required_fields.keys.each { |k| h[k] = self.send(k) }
  end
end

#update(attrs) ⇒ Object

Raises:

  • (ArgumentError)


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

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

#valid?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/formal_wear/instance_methods.rb', line 43

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