Module: ActiveConformity::ConformableExtensions
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/active_conformity/conformable_extensions.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(m, *args, &block) ⇒ Object
79
80
81
82
83
84
85
|
# File 'lib/active_conformity/conformable_extensions.rb', line 79
def method_missing(m, *args, &block)
if m.to_sym == :conformity_set && !self.class.column_names.include?(m.to_s)
conformable.try(:conformity_set)
else
super
end
end
|
Instance Method Details
61
62
63
64
65
66
|
# File 'lib/active_conformity/conformable_extensions.rb', line 61
def add_conformity_set!(conformity_set = {}, conformist_type)
conformable_attrs = {conformable_id: self.id, conformable_type: self.class.name, conformist_type: conformist_type}
@conformable = Conformable.where(conformable_attrs).first_or_create
@conformable.add_conformity_set(conformity_set)
@conformable.save!
end
|
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/active_conformity/conformable_extensions.rb', line 31
def aggregate_conformity_set
acs = {}
return acs if !conformable_references.any?
conformable_references.each do |c|
c = Conformable.find_by!(conformable_id: c.id, conformable_type: c.class.name).conformity_set
c = JSON.parse(c) if c.is_a?(String)
acs.merge!(c)
end
acs
end
|
56
57
58
59
|
# File 'lib/active_conformity/conformable_extensions.rb', line 56
def conformable
@conformable ||= Conformable.find_by(conformable_id: self.id, conformable_type: self.class.name)
@conformable
end
|
68
69
70
71
|
# File 'lib/active_conformity/conformable_extensions.rb', line 68
def conformable_references
[conformable_references_from_associations + add_self_to_conformable_references.to_a]
.flatten.compact.uniq
end
|
44
45
46
47
48
|
# File 'lib/active_conformity/conformable_extensions.rb', line 44
def conforming_dependents_conform?
return true if dependents.blank?
!dependents.flat_map { |da| self.send(da)}
.any?{ |da| !da.conforms? }
end
|
27
28
29
|
# File 'lib/active_conformity/conformable_extensions.rb', line 27
def conformity_errors
validator.errors.messages
end
|
50
51
52
53
54
|
# File 'lib/active_conformity/conformable_extensions.rb', line 50
def conformity_sets_by_reference
conformable_references.flat_map do |cr|
{"#{cr.class.name} id: #{cr.id}"=> cr.conformable.conformity_set}
end
end
|
23
24
25
|
# File 'lib/active_conformity/conformable_extensions.rb', line 23
def conforms?
validator.conforms? && conforming_dependents_conform?
end
|