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



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_referersObject



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_allObject



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_refereesObject



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

Instance Method Details

#referenceeObject



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

def referencee
  Card[referee_id]
end

#referencerObject



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

def referencer
  Card[referer_id]
end