Class: InOrder::Aux::Repair
- Inherits:
-
Object
- Object
- InOrder::Aux::Repair
- Defined in:
- app/models/in_order/aux/repair.rb
Instance Attribute Summary collapse
-
#dry_run ⇒ Object
(also: #dry_run?)
Returns the value of attribute dry_run.
-
#elements ⇒ Object
Returns the value of attribute elements.
-
#owners ⇒ Object
Returns the value of attribute owners.
Class Method Summary collapse
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(_dry_run = false, dry_run: _dry_run) ⇒ Repair
constructor
A new instance of Repair.
- #linked(name) ⇒ Object
- #unlinked(name) ⇒ Object
- #unreferenced(name) ⇒ Object
Constructor Details
#initialize(_dry_run = false, dry_run: _dry_run) ⇒ Repair
Returns a new instance of Repair.
8 9 10 11 12 13 |
# File 'app/models/in_order/aux/repair.rb', line 8 def initialize(_dry_run=false, dry_run: _dry_run) self.dry_run = dry_run self.owners = [] self.elements = [] end |
Instance Attribute Details
#dry_run ⇒ Object Also known as: dry_run?
Returns the value of attribute dry_run.
5 6 7 |
# File 'app/models/in_order/aux/repair.rb', line 5 def dry_run @dry_run end |
#elements ⇒ Object
Returns the value of attribute elements.
5 6 7 |
# File 'app/models/in_order/aux/repair.rb', line 5 def elements @elements end |
#owners ⇒ Object
Returns the value of attribute owners.
5 6 7 |
# File 'app/models/in_order/aux/repair.rb', line 5 def owners @owners end |
Class Method Details
.ic ⇒ Object
34 35 36 37 38 39 |
# File 'app/models/in_order/aux/repair.rb', line 34 def ic owners, elements = new(true).call puts show 'Owners', owners puts show 'Elements', elements end |
.show(name, list) ⇒ Object
41 42 43 44 45 |
# File 'app/models/in_order/aux/repair.rb', line 41 def show(name, list) out = name << ' ' << list.size.to_s << "\n" out << list.map(&:to_param) * " " << "\n" end |
Instance Method Details
#call ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'app/models/in_order/aux/repair.rb', line 15 def call InOrder::Element.transaction do unreferenced :owner do |type_id| owners << type_id * '-' InOrder::Element.by_owner_keys(*type_id).delete_all unless dry_run? end unlinked :subject do |element| elements << element InOrder::Remove.new(element).call unless dry_run? end end return owners, elements end |
#linked(name) ⇒ Object
62 63 64 65 66 |
# File 'app/models/in_order/aux/repair.rb', line 62 def linked(name) fields = [ :"#{name}_type", :"#{name}_id" ] InOrder::Element.select(*fields).distinct.pluck(*fields) end |
#unlinked(name) ⇒ Object
48 49 50 51 52 53 54 |
# File 'app/models/in_order/aux/repair.rb', line 48 def unlinked(name) unreferenced(name).map do |type_id| InOrder::Element.by_subject_keys(*type_id).first.tap do |element| yield element if block_given? end end end |
#unreferenced(name) ⇒ Object
56 57 58 59 60 |
# File 'app/models/in_order/aux/repair.rb', line 56 def unreferenced(name) linked(name).reject do |(type, id)| type.constantize.where(id: id).exists? end end |