diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/models/chouette/line.rb | 2 | ||||
| -rw-r--r-- | app/models/chouette/stif_codifligne_objectid.rb | 18 | ||||
| -rw-r--r-- | app/models/concerns/stif_codifligne_attributes_support.rb | 21 |
3 files changed, 40 insertions, 1 deletions
diff --git a/app/models/chouette/line.rb b/app/models/chouette/line.rb index 33a2fbb00..63d2d1606 100644 --- a/app/models/chouette/line.rb +++ b/app/models/chouette/line.rb @@ -1,5 +1,5 @@ class Chouette::Line < Chouette::ActiveRecord - include DefaultNetexAttributesSupport + include StifCodifligneAttributesSupport include LineRestrictions include LineReferentialSupport include StifTransportModeEnumerations diff --git a/app/models/chouette/stif_codifligne_objectid.rb b/app/models/chouette/stif_codifligne_objectid.rb new file mode 100644 index 000000000..46109e24f --- /dev/null +++ b/app/models/chouette/stif_codifligne_objectid.rb @@ -0,0 +1,18 @@ +class Chouette::StifCodifligneObjectid < String + + @@format = /^([A-Za-z_]+):([A-Za-z]+):([A-Za-z]+):([0-9A-Za-z_-]+)$/ + cattr_reader :format + + def parts + match(format).try(:captures) + end + + def object_type + parts.try(:third) + end + + def local_id + parts.try(:fourth) + end + +end diff --git a/app/models/concerns/stif_codifligne_attributes_support.rb b/app/models/concerns/stif_codifligne_attributes_support.rb new file mode 100644 index 000000000..d4370e505 --- /dev/null +++ b/app/models/concerns/stif_codifligne_attributes_support.rb @@ -0,0 +1,21 @@ +module StifCodifligneAttributesSupport + extend ActiveSupport::Concern + + included do + validates_presence_of :objectid + end + + module ClassMethods + def object_id_key + model_name + end + + def model_name + ActiveModel::Name.new self, Chouette, self.name.demodulize + end + end + + def objectid + Chouette::StifCodifligneObjectid.new read_attribute(:objectid).to_s + end +end |
