Class: Card::Reference
- Defined in:
- lib/card/reference.rb
Class Method Summary collapse
- .delete_all_from(card) ⇒ Object
- .delete_all_to(card) ⇒ 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 |
.repair_all ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/card/reference.rb', line 46 def repair_all connection.execute 'truncate card_references' Card.update_all :references_expired => 1 expired_cards_remain = true batchsize, count_updated = 100, 0 while expired_cards_remain batch = Card.find_all_by_references_expired(1, :order=>"name ASC", :limit=>batchsize) if batch.empty? expired_cards_remain = false else Rails.logger.debug "Updating references for '#{batch.first.name}' to '#{batch.last.name}' ... "; $stdout.flush batch.each do |card| count_updated += 1 card.update_references end Rails.logger.info "batch done. \t\t#{count_updated} total updated" end end end |
.repair_missing_referees ⇒ Object
42 43 44 |
# File 'lib/card/reference.rb', line 42 def repair_missing_referees where( Card.where( :id=>arel_table[:referee_id]).exists.not ).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 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 |