Class: ObjectOffWorld

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/object_off_world.rb

Constant Summary collapse

TYPES =

Types d’objets autorisés. Le format de la liste imbriquée est :

Premier champ

Valeur à afficher

Deuxième champ

Valeur à stocker en base

On peut étendre cette liste pour ajouter de nouveaux types.

[ [ "URL", "url" ], 
[ "Media URL", "mediaurl" ] ]

Instance Method Summary collapse

Instance Method Details

#after_destroyObject

Enregistrement d’une nouvelle révision des panneaux du mobilier à chaque suppression d’objet. On reprend les id de panneaux qu’on a notés avant la destruction de l’objet.



70
71
72
73
74
# File 'app/models/object_off_world.rb', line 70

def after_destroy
  @panels_needing_revisions.each do |panel_id|
    PanelRevision.add(Panel.find(panel_id)) # Nouvelle révision du panneau
  end
end

#before_destroyObject

Note les id des panneaux dont on doit créer une nouvelle révision, avant destruction des objets associés



64
65
66
# File 'app/models/object_off_world.rb', line 64

def before_destroy
  @panels_needing_revisions = self.panels.map(&:id)
end

#before_validationObject

Pour remplir le champ ‘object_key’, calcule le md5 de ‘name’ plus ‘content’ et réécrit le de façon à ce que ça ressemble à une clé Second Life, en rajoutant 4 tirets aux bons endroits.



46
47
48
49
50
51
52
53
54
# File 'app/models/object_off_world.rb', line 46

def before_validation
  # Si name ou content sont indéfini on ne peut pas calculer le MD5
  return if name.nil? or content.nil?
  
  key = Digest::MD5.new.update(name + content).to_s
  self.object_key = key.sub(
            /^([[:xdigit:]]{8})([[:xdigit:]]{4})([[:xdigit:]]{4})([[:xdigit:]]{4})([[:xdigit:]]{12})$/, 
            '\1-\2-\3-\4-\5')
end