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
96
97
98
99
100
101
102
|
# File 'lib/active_conformity/conformable_extensions.rb', line 96
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
62
63
64
65
66
67
|
# File 'lib/active_conformity/conformable_extensions.rb', line 62
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
|
77
78
79
80
|
# File 'lib/active_conformity/conformable_extensions.rb', line 77
def add_self_to_conformable_references
self if Conformable.where(conformable_id: self.id,
conformable_type: self.class.name).any?
end
|
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/active_conformity/conformable_extensions.rb', line 32
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
|
57
58
59
60
|
# File 'lib/active_conformity/conformable_extensions.rb', line 57
def conformable
@conformable ||= Conformable.find_by(conformable_id: self.id, conformable_type: self.class.name)
@conformable
end
|
69
70
71
72
73
74
75
|
# File 'lib/active_conformity/conformable_extensions.rb', line 69
def conformable_references
return @conformable_references if defined? @conformable_references
@conformable_references = Set.new
@conformable_references.merge conformable_references_from_associations
@conformable_references.add add_self_to_conformable_references
@conformable_references = @conformable_references.to_a.compact
end
|
45
46
47
48
49
|
# File 'lib/active_conformity/conformable_extensions.rb', line 45
def conforming_dependents_conform?
return true if dependents.blank?
!dependents.flat_map { |da| self.send(da)}
.any?{ |da| !da.conforms? }
end
|
28
29
30
|
# File 'lib/active_conformity/conformable_extensions.rb', line 28
def conformity_errors
validator.errors.messages
end
|
51
52
53
54
55
|
# File 'lib/active_conformity/conformable_extensions.rb', line 51
def conformity_sets_by_reference
conformable_references.flat_map do |cr|
{"#{cr.class.name} id: #{cr.id}"=> cr.conformable.conformity_set}
end
end
|
24
25
26
|
# File 'lib/active_conformity/conformable_extensions.rb', line 24
def conforms?
validator.conforms? && conforming_dependents_conform?
end
|
82
83
84
|
# File 'lib/active_conformity/conformable_extensions.rb', line 82
def remove_conformity_rule!(attr)
conformable.remove_coformity_rule!(attr)
end
|
#remove_rules ⇒ Object
86
87
88
|
# File 'lib/active_conformity/conformable_extensions.rb', line 86
def remove_rules
conformable.remove_rules!
end
|