diff options
| author | Xinhui Xu | 2017-07-25 14:50:33 +0200 |
|---|---|---|
| committer | GitHub | 2017-07-25 14:50:33 +0200 |
| commit | 8f54a0e504f70e14e94dad810effdca5e85ee00c (patch) | |
| tree | 18e38d8de8ee2c094ae972de2f1927312624ce5e /app | |
| parent | b08046d29d7edc181c27797b4b5f14dce1ed8434 (diff) | |
| parent | 2e6233e8c10465398ccaf31306a057a2bd0ed1d5 (diff) | |
| download | chouette-core-8f54a0e504f70e14e94dad810effdca5e85ee00c.tar.bz2 | |
Merge pull request #42 from af83/codifligne_objectid
StifCodifligneAttributesSupport for Line objectid
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 |
