Class: Card::Reference

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/card/reference.rb

Class Method Summary collapse

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_allObject



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_refereesObject



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

Instance Method Details

#referenceeObject



7
8
9
# File 'lib/card/reference.rb', line 7

def referencee
  Card[referee_id]
end

#referencerObject



3
4
5
# File 'lib/card/reference.rb', line 3

def referencer
  Card[referer_id]
end