diff options
| author | Zog | 2018-04-25 12:15:49 +0200 | 
|---|---|---|
| committer | Zog | 2018-04-25 12:15:49 +0200 | 
| commit | 99f63c55d74845db77c1488a191778bf642c6e44 (patch) | |
| tree | de53678f1701f97f18ad708724748a0f02b5e1b5 /app/models | |
| parent | eb51cf0aa62a96c552c1a32778aa84e64df458a6 (diff) | |
| download | chouette-core-99f63c55d74845db77c1488a191778bf642c6e44.tar.bz2 | |
Refs #6711; Update checksums on parents
When a StopPoint is updated
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/chouette/journey_pattern.rb | 2 | ||||
| -rw-r--r-- | app/models/chouette/stop_point.rb | 1 | ||||
| -rw-r--r-- | app/models/chouette/vehicle_journey.rb | 3 | ||||
| -rw-r--r-- | app/models/concerns/checksum_support.rb | 9 | 
4 files changed, 11 insertions, 4 deletions
| diff --git a/app/models/chouette/journey_pattern.rb b/app/models/chouette/journey_pattern.rb index 4b4cc2c73..8bdf72dfb 100644 --- a/app/models/chouette/journey_pattern.rb +++ b/app/models/chouette/journey_pattern.rb @@ -29,6 +29,8 @@ module Chouette        values.flatten      end +    has_checksum_children StopPoint +      def self.state_update route, state        transaction do          state.each do |item| diff --git a/app/models/chouette/stop_point.rb b/app/models/chouette/stop_point.rb index b0906d65f..edb0e81fd 100644 --- a/app/models/chouette/stop_point.rb +++ b/app/models/chouette/stop_point.rb @@ -11,6 +11,7 @@ module Chouette      belongs_to :stop_area      belongs_to :route, inverse_of: :stop_points +    has_many :journey_patterns, through: :route      has_many :vehicle_journey_at_stops, :dependent => :destroy      has_many :vehicle_journeys, -> {uniq}, :through => :vehicle_journey_at_stops diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index 814eeb388..dd7d75731 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -143,13 +143,14 @@ module Chouette          vjas =  self.vehicle_journey_at_stops          vjas += VehicleJourneyAtStop.where(vehicle_journey_id: self.id) unless self.new_record? -        attrs << vjas.uniq.sort_by { |s| s.stop_point&.position }.map(&:checksum).sort +        attrs << vjas.uniq.sort_by { |s| s.stop_point&.position }.map(&:checksum)          attrs << self.purchase_windows.map(&:checksum).sort if purchase_windows.present?        end      end      has_checksum_children VehicleJourneyAtStop +    has_checksum_children StopPoint      def set_default_values        if number.nil? diff --git a/app/models/concerns/checksum_support.rb b/app/models/concerns/checksum_support.rb index de3a6e16b..97209f810 100644 --- a/app/models/concerns/checksum_support.rb +++ b/app/models/concerns/checksum_support.rb @@ -12,10 +12,13 @@ module ChecksumSupport    module ClassMethods      def has_checksum_children klass, opts={}        parent_class = self -      relation = opts[:relation] || self.model_name.singular +      belongs_to = opts[:relation] || self.model_name.singular +      has_many = opts[:relation] || self.model_name.plural        klass.after_save do -        parent = self.send(relation) -        parent&.update_checksum_without_callbacks! +        parents = [] +        parents << self.send(belongs_to) if klass.reflections[belongs_to].present? +        parents += self.send(has_many) if klass.reflections[has_many].present? +        parents.each &:update_checksum_without_callbacks!        end      end    end | 
