Sha256: cc63a047fab05f448d39c1a6ff7e522b34577d4e43021f0cf3911c1a7489f900
Contents?: true
Size: 1.72 KB
Versions: 5
Compression:
Stored size: 1.72 KB
Contents
# -*- encoding : utf-8 -*- class Card::Reference < ActiveRecord::Base def referencer Card[referer_id] end def referencee Card[referee_id] end class << self def delete_all_from card delete_all :referer_id => card.id end def delete_all_to card where( :referee_id => card.id ).update_all :present=>0, :referee_id => nil end 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 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 def update_on_delete card delete_all_from card delete_all_to card end def repair_missing_referees #FIXME - should treat trashed cards as not existing where( Card.where( :id=>arel_table[:referee_id], :trash=>false).exists.not ).update_all :referee_id=>nil end def delete_missing_referers where( Card.where( :id=>arel_table[:referer_id], :trash=>false).exists.not ).delete_all end def repair_all delete_missing_referers Card.where(:trash=>false).find_each do |card| Rails.logger.info "\n\n\nRepairing references for '#{card.name}' (id: #{card.id}) ... \n\n\n" card.update_references end end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
wagn-1.14.9 | lib/card/reference.rb |
wagn-1.14.8 | lib/card/reference.rb |
wagn-1.14.7 | lib/card/reference.rb |
wagn-1.14.6 | lib/card/reference.rb |
wagn-1.14.5 | lib/card/reference.rb |