Module: PathUtilities::Form

Extended by:
ActiveSupport::Concern
Defined in:
lib/path_utilities/form.rb,
lib/path_utilities/form/tracking_changes.rb,
lib/path_utilities/form/uniqueness_validator.rb,
lib/path_utilities/form/uniqueness_validator/mongoid.rb

Defined Under Namespace

Modules: TrackingChanges, UniquenessValidator

Instance Method Summary collapse

Instance Method Details

#init_syncObject



80
81
82
83
84
85
# File 'lib/path_utilities/form.rb', line 80

def init_sync
  self.class.fields.keys.each do |field|
    model_value = instance_model_for(field).send("#{field}")
    send("#{field}=", model_value)
  end
end

#instance_model_for(field) ⇒ Object



75
76
77
78
# File 'lib/path_utilities/form.rb', line 75

def instance_model_for(field)
  model = self.class.fields[field].options[:klass].name.underscore.to_sym
  models_mapping[model]
end

#main_recordObject



87
88
89
90
# File 'lib/path_utilities/form.rb', line 87

def main_record
  self.class.model_name || fail('setup_model_name not set in form class')
  models_mapping[self.class.model_name.name.to_sym]
end

#saveObject



58
59
60
61
62
63
64
65
66
# File 'lib/path_utilities/form.rb', line 58

def save
  if valid?
    sync
    persist!
    true
  else
    false
  end
end

#syncObject



68
69
70
71
72
73
# File 'lib/path_utilities/form.rb', line 68

def sync
  self.class.fields.keys.each do |field|
    form_field_value = send(field)
    instance_model_for(field).send("#{field}=", form_field_value)
  end
end

#validate_mapping!Object



51
52
53
54
55
56
# File 'lib/path_utilities/form.rb', line 51

def validate_mapping!
  self.class.models.each do |model|
    next if models_mapping.keys.include?(model)
    fail "#{model.to_s.camelize} not mapped on initialization"
  end
end