Class: SecondLifeSimPosNormalizer

Inherits:
Object
  • Object
show all
Defined in:
lib/second_life_validators.rb

Overview

Correction de la sim et de la position avant validation et insertion en base de données Ce validateur doit être défini comme callback before_validation dans les modèles qui contiennent des attributs Sim et Position.

La classe prend 2 paramètres à la création : sim et position

Syntaxe :

before_validation SecondLifeSimPosNormalizer.new(:sim, :position)

Instance Method Summary collapse

Constructor Details

#initialize(sim_attr, pos_attr) ⇒ SecondLifeSimPosNormalizer

Création du callback personnalisé Second Life.

Paramètres :

  • sim_attr : Nom de l’attribut sim du modèle

  • pos_attr : Nom de l’attribut pos du modèle



71
72
73
# File 'lib/second_life_validators.rb', line 71

def initialize(sim_attr, pos_attr)
  @sim_attr, @pos_attr = sim_attr, pos_attr
end

Instance Method Details

#before_validation(model) ⇒ Object

Le callback lui-même. Il n’est pas appelé par le programme, mais par Rail lui-même.

Paramètres :

  • model : Nom du modèle contenant les attributs Second Life à normaliser.



80
81
82
83
84
85
86
87
88
# File 'lib/second_life_validators.rb', line 80

def before_validation(model)
  # Suppression du groupe de nombre entre parenthèse après le nom de Sim. Les objets SL
  # retournent actuellement la sim sous la forme "Myeon (263936, 235008)"
  model[@sim_attr].gsub!(/\s+\(.*\)$/, "") if !model[@sim_attr].nil?
  # Suppression des parenthèses, espaces et nombres après la virgule.
  # Actuellement les objets SL retourne leur position sous la forme "(37.893913, 223.712784, 56.184517)"
  # On transforme cela en "37,223,56"
  model[@pos_attr].gsub!(/(\(|\)|\.[[:digit:]]+|\s+)/, "") if !model[@pos_attr].nil?
end