diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/models/chouette/footnote.rb | 15 | ||||
| -rw-r--r-- | app/models/chouette/vehicle_journey_at_stop.rb | 1 | ||||
| -rw-r--r-- | app/models/concerns/checksum_support.rb | 27 |
3 files changed, 30 insertions, 13 deletions
diff --git a/app/models/chouette/footnote.rb b/app/models/chouette/footnote.rb index 00a2b223a..1664faf23 100644 --- a/app/models/chouette/footnote.rb +++ b/app/models/chouette/footnote.rb @@ -1,24 +1,13 @@ class Chouette::Footnote < Chouette::ActiveRecord + include ChecksumSupport + belongs_to :line, inverse_of: :footnotes has_and_belongs_to_many :vehicle_journeys, :class_name => 'Chouette::VehicleJourney' validates_presence_of :line - before_save :update_checksum def checksum_attributes attrs = ['code', 'label'] self.slice(*attrs).values end - - def current_checksum_source - source = self.checksum_attributes.map!{ |x| x || '-' } - source.join('|') - end - - def update_checksum - self.checksum_source = self.current_checksum_source - if self.checksum_source_changed? - self.checksum = Digest::SHA256.new.hexdigest(self.checksum_source) - end - end end diff --git a/app/models/chouette/vehicle_journey_at_stop.rb b/app/models/chouette/vehicle_journey_at_stop.rb index 5dfec8352..4518d09cf 100644 --- a/app/models/chouette/vehicle_journey_at_stop.rb +++ b/app/models/chouette/vehicle_journey_at_stop.rb @@ -2,6 +2,7 @@ module Chouette class VehicleJourneyAtStop < ActiveRecord include ForBoardingEnumerations include ForAlightingEnumerations + include ChecksumSupport # FIXME http://jira.codehaus.org/browse/JRUBY-6358 self.primary_key = "id" diff --git a/app/models/concerns/checksum_support.rb b/app/models/concerns/checksum_support.rb new file mode 100644 index 000000000..13c476607 --- /dev/null +++ b/app/models/concerns/checksum_support.rb @@ -0,0 +1,27 @@ +module ChecksumSupport + extend ActiveSupport::Concern + SEPARATOR = '|' + VALUE_FOR_NIL_ATTRIBUTE = '-' + + included do + before_save :set_current_checksum_source, :update_checksum + end + + def checksum_attributes + self.attributes.values + end + + def current_checksum_source + self.checksum_attributes.map!{ |x| x || VALUE_FOR_NIL_ATTRIBUTE }.join(SEPARATOR) + end + + def set_current_checksum_source + self.checksum_source = self.current_checksum_source + end + + def update_checksum + if self.checksum_source_changed? + self.checksum = Digest::SHA256.new.hexdigest(self.checksum_source) + end + end +end |
