Module: Tramway::Core::ApplicationForms::AssociationObjectHelpers

Included in:
Tramway::Core::ApplicationForm
Defined in:
app/forms/tramway/core/application_forms/association_object_helpers.rb

Instance Method Summary collapse

Instance Method Details

#define_association_method(association, class_name) ⇒ Object



4
5
6
7
8
9
10
11
12
13
# File 'app/forms/tramway/core/application_forms/association_object_helpers.rb', line 4

def define_association_method(association, class_name)
  if class_name.is_a? Array
    define_polymorphic_association association
  else
    self.class.send(:define_method, "#{association}=") do |value|
      model.send "#{association}_id=", value
      model.send "#{association}=", class_name.find(value)
    end
  end
end

#define_polymorphic_association(association) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/forms/tramway/core/application_forms/association_object_helpers.rb', line 15

def define_polymorphic_association(association)
  self.class.send(:define_method, "#{association}=") do |value|
    if value.present?
      if association_class(value).nil?
        Tramway::Error.raise_error :tramway, :core, :application_form, :initialize, :polymorphic_class_is_nil,
          association_name: association
      else
        model.send "#{association}=", association_class(value).find(value.split('_')[-1])
        send "#{association}_type=", association_class(value).to_s
      end
    end
  end
end