aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/concerns
diff options
context:
space:
mode:
authorXinhui2017-08-31 15:32:12 +0200
committerXinhui2017-08-31 15:32:12 +0200
commit69e786ccb4a08b045708670d712ac1343e053099 (patch)
tree6ee3721c67d3cd465ceb4837c248a0edb27ef4a8 /app/models/concerns
parentdb91d342ccf229f66f1bed2a2fe11bceccff58be (diff)
downloadchouette-core-69e786ccb4a08b045708670d712ac1343e053099.tar.bz2
Refactoring objectid support & spec
Diffstat (limited to 'app/models/concerns')
-rw-r--r--app/models/concerns/stif_netex_attributes_support.rb53
1 files changed, 21 insertions, 32 deletions
diff --git a/app/models/concerns/stif_netex_attributes_support.rb b/app/models/concerns/stif_netex_attributes_support.rb
index 5eb5285cf..782a75295 100644
--- a/app/models/concerns/stif_netex_attributes_support.rb
+++ b/app/models/concerns/stif_netex_attributes_support.rb
@@ -2,14 +2,12 @@ module StifNetexAttributesSupport
extend ActiveSupport::Concern
included do
-
- validates_presence_of :objectid
- validates :objectid, uniqueness: true
validates_numericality_of :object_version
+ validates :objectid, uniqueness: true, presence: true
validate :objectid_format_compliance
+ after_save :build_objectid
before_validation :default_values, on: :create
- # before_save :increment_workbench_local_id
end
module ClassMethods
@@ -22,44 +20,35 @@ module StifNetexAttributesSupport
end
end
- def objectid
- Chouette::StifNetexObjectid.new read_attribute(:objectid)
- end
-
- def provider_id
- self.referential.workbench.organisation.name.parameterize
+ def objectid_format_compliance
+ errors.add :objectid, I18n.t("activerecord.errors.models.stif_netex.invalid_object_id") if !objectid.valid?
end
- def object_type
- self.model_name
+ def build_objectid
+ if objectid.include? ':__pending_id__'
+ self.objectid = Chouette::StifNetexObjectid.create(self.provider_id, self.model_name, self.local_id, self.boiv_id)
+ self.save
+ end
end
- def local_id
- ''
- end
+ def default_values
+ self.object_version ||= 1
- def boiv_id
- 'LOC'
+ if self.objectid.to_s.empty?
+ local_id = "__pending_id__#{rand(50)+ rand(50)}"
+ self.objectid = Chouette::StifNetexObjectid.create(self.provider_id, self.model_name, local_id, self.boiv_id)
+ end
end
- def objectid_format_compliance
- errors.add :objectid, I18n.t("activerecord.errors.models.stif_netex.invalid_object_id") if !objectid.valid?
+ def objectid
+ Chouette::StifNetexObjectid.new read_attribute(:objectid)
end
- def default_values
- if self.objectid.to_s.empty?
- self.objectid = Chouette::StifNetexObjectid.create(provider_id, object_type, local_id, boiv_id)
- end
- self.object_version ||= 1
+ def provider_id
+ self.referential.workbench.organisation.name.parameterize
end
- def increment_workbench_local_id
- # workbench_object_identifier = self.referential.workbench.worbench_object_identifiers.find_or_create_by_object_class(self.class)
- # result = WorbenchObjectIdentifier.increment_counter(:last_local_id, 1)
- # counter = 3
- # # Ecrire le code pour répéter l'opération 3 fois au cas ou l'enregistrement échouerait.
- # while result == false && counter <= 3
- # .....
- # end
+ def boiv_id
+ 'LOC'
end
end