Class: Card::Reference
- Defined in:
- lib/card/reference.rb
Class Method Summary collapse
- .delete_all_from(card) ⇒ Object
- .delete_all_to(card) ⇒ Object
- .delete_missing_referers ⇒ Object
- .repair_all ⇒ Object
- .repair_missing_referees ⇒ Object
- .update_existing_key(card, name = nil) ⇒ Object
- .update_on_delete(card) ⇒ Object
- .update_on_rename(card, newname, update_referers = false) ⇒ Object
Instance Method Summary collapse
Class Method Details
.delete_all_from(card) ⇒ Object
14 15 16 |
# File 'lib/card/reference.rb', line 14 def delete_all_from card delete_all referer_id: card.id end |
.delete_all_to(card) ⇒ Object
18 19 20 |
# File 'lib/card/reference.rb', line 18 def delete_all_to card where( referee_id: card.id ).update_all present: 0, referee_id: nil end |
.delete_missing_referers ⇒ Object
47 48 49 |
# File 'lib/card/reference.rb', line 47 def delete_missing_referers joins('LEFT JOIN cards ON card_references.referer_id = cards.id').where('cards.id IS NULL OR cards.trash IS TRUE').delete_all end |
.repair_all ⇒ Object
51 52 53 54 55 56 57 58 |
# File 'lib/card/reference.rb', line 51 def repair_all delete_missing_referers Card.where(trash: false).find_each do |card| Rails.logger.info "\nRepairing references for '#{card.name}' (id: #{card.id}) ... " card.update_references end end |
.repair_missing_referees ⇒ Object
43 44 45 |
# File 'lib/card/reference.rb', line 43 def repair_missing_referees joins('LEFT JOIN cards ON card_references.referee_id = cards.id').where('(cards.id IS NULL OR cards.trash IS TRUE) AND referee_id IS NOT NULL').update_all referee_id: nil end |
.update_existing_key(card, name = nil) ⇒ Object
22 23 24 25 |
# File 'lib/card/reference.rb', line 22 def update_existing_key card, name=nil key = (name || card.name).to_name.key where( referee_key: key ).update_all present: 1, referee_id: card.id end |
.update_on_delete(card) ⇒ Object
38 39 40 41 |
# File 'lib/card/reference.rb', line 38 def update_on_delete card delete_all_from card delete_all_to card end |
.update_on_rename(card, newname, update_referers = false) ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/card/reference.rb', line 27 def update_on_rename card, newname, update_referers=false if update_referers # not currentlt needed because references are deleted and re-created in the process of adding new revision #where( referee_id: card.id ).update_all referee_key: newname.to_name.key else delete_all_to card end #Rails.logger.warn "update on rename #{card.inspect}, #{newname}, #{update_referers}" update_existing_key card, newname end |