Module: CaseForm::ElementExt::Associationable

Instance Method Summary collapse

Instance Method Details

#associationObject



8
9
10
# File 'lib/case_form/element_ext/associationable.rb', line 8

def association
  object.class.reflect_on_association(method) if associationable?
end

#association_classObject



12
13
14
# File 'lib/case_form/element_ext/associationable.rb', line 12

def association_class
  association.klass if association
end

#association_human_model_nameObject



41
42
43
# File 'lib/case_form/element_ext/associationable.rb', line 41

def association_human_model_name
  association_class.human_name
end

#association_methodObject



20
21
22
23
24
25
26
27
28
29
# File 'lib/case_form/element_ext/associationable.rb', line 20

def association_method
  case association.macro
  when :belongs_to
    :"#{method.to_s}_id"
  when :has_one
    method
  when :has_many
    :"#{method.to_s.singularize}_ids"
  end
end

#association_type?(type) ⇒ Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/case_form/element_ext/associationable.rb', line 16

def association_type?(type)
  association and association.macro == type
end

#associationable?Boolean

Returns:

  • (Boolean)


4
5
6
# File 'lib/case_form/element_ext/associationable.rb', line 4

def associationable?
  object.class.respond_to?(:reflect_on_association)
end

#collection_association?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/case_form/element_ext/associationable.rb', line 49

def collection_association?
  association_type?(:has_many)
end

#one_to_one_association?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/case_form/element_ext/associationable.rb', line 45

def one_to_one_association?
  association_type?(:belongs_to) || association_type?(:has_one)
end

#specific_methodObject



31
32
33
# File 'lib/case_form/element_ext/associationable.rb', line 31

def specific_method
  association ? association_method : method
end

#validate_nested_attributes_association(method, object) ⇒ Object

Raises:

  • (NoMethodError)


35
36
37
38
39
# File 'lib/case_form/element_ext/associationable.rb', line 35

def validate_nested_attributes_association(method, object)
  raise(NoMethodError, "Not defined :accepts_nested_attributes_for method " +
        "for :#{method} association in #{object.class} model!") unless object.respond_to?(:"#{method}_attributes=")
  method
end