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
13 14 15 |
# File 'lib/card/reference.rb', line 13 def delete_all_from card delete_all referer_id: card.id end |
.delete_all_to(card) ⇒ Object
17 18 19 |
# File 'lib/card/reference.rb', line 17 def delete_all_to card where(referee_id: card.id).update_all present: 0, referee_id: nil end |
.delete_missing_referers ⇒ Object
50 51 52 53 54 55 56 |
# File 'lib/card/reference.rb', line 50 def delete_missing_referers joins( 'LEFT JOIN cards ON card_references.referer_id = cards.id' ).where( 'cards.id IS NULL' ).delete_all end |
.repair_all ⇒ Object
58 59 60 61 62 63 64 65 66 |
# File 'lib/card/reference.rb', line 58 def repair_all delete_missing_referers Card.where(trash: false).find_each do |card| Rails.logger.info "Repairing references for '#{card.name}'" \ "(id: #{card.id}) ... " card.update_references end end |
.repair_missing_referees ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/card/reference.rb', line 42 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
21 22 23 24 |
# File 'lib/card/reference.rb', line 21 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
37 38 39 40 |
# File 'lib/card/reference.rb', line 37 def update_on_delete card delete_all_from card delete_all_to card end |
.update_on_rename(card, newname, update_referers = false) ⇒ Object
26 27 28 29 30 31 32 33 34 35 |
# File 'lib/card/reference.rb', line 26 def update_on_rename card, newname, update_referers=false if update_referers # not currently 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 update_existing_key card, newname end |