diff options
| author | Zog | 2018-05-28 10:27:10 +0200 | 
|---|---|---|
| committer | Zog | 2018-05-28 10:27:10 +0200 | 
| commit | b060a1901a18e24e8925cf65ca566d75c03cee32 (patch) | |
| tree | 30005cabd1ebe16de846ea82885b4ded71dba337 | |
| parent | 4080e257ad35d3200b4c02742268095c617901f9 (diff) | |
| download | chouette-core-7031-fox-consolidated-view.tar.bz2 | |
Refs #7031; Fix consolidated view7031-fox-consolidated-view
And remove n+1 queries
| -rw-r--r-- | app/models/chouette/route.rb | 3 | ||||
| -rw-r--r-- | app/services/referential_consolidated.rb | 17 | 
2 files changed, 16 insertions, 4 deletions
| diff --git a/app/models/chouette/route.rb b/app/models/chouette/route.rb index 958bec75b..6a02203ad 100644 --- a/app/models/chouette/route.rb +++ b/app/models/chouette/route.rb @@ -169,7 +169,8 @@ module Chouette      end      def time_tables -      vehicle_journeys.joins(:time_tables).map(&:"time_tables").flatten.uniq +      ids = vehicle_journeys.joins(:time_tables).pluck('time_tables.id').uniq +      Chouette::TimeTable.where(id: ids)      end      def sorted_vehicle_journeys(journey_category_model) diff --git a/app/services/referential_consolidated.rb b/app/services/referential_consolidated.rb index d9c8d86da..832210db3 100644 --- a/app/services/referential_consolidated.rb +++ b/app/services/referential_consolidated.rb @@ -81,6 +81,7 @@ class ReferentialConsolidated          ar_model.vehicle_journey_at_stops.each do |vjas|            out[vjas.vehicle_journey_id][vjas.stop_point_id] = vjas          end +        out        end      end @@ -103,8 +104,18 @@ class ReferentialConsolidated        (should_highlight? || matching_stop_areas) && highlighted_journeys.exists?      end +    def stop_areas +      @stop_areas ||= begin +        out = {} +        ar_model.stop_areas.select(:id, :name, :city_name, :zip_code, :time_zone).each do |sp| +          out[sp.id] = sp +        end +        out +      end +    end +      def stop_points -      @stop_points ||= ar_model.stop_points.map {|sp| StopPoint.new(self, sp, @all_vehicle_journeys, params) } +      @stop_points ||= ar_model.stop_points.map {|sp| StopPoint.new(self, sp, @all_vehicle_journeys, params, stop_area: stop_areas[sp.stop_area_id]) }      end    end @@ -116,7 +127,7 @@ class ReferentialConsolidated      end      def vehicle_journey_at_stops -      @opts[:vehicle_journey_at_stops] +      @opts[:vehicle_journey_at_stops] || {}      end      def has_purchase_window? purchase_window @@ -132,7 +143,7 @@ class ReferentialConsolidated      def_delegators :ar_model, :id, :arrival_time, :departure_time, :stop_area_id      def stop_area -      ar_model.stop_area_light +      @opts[:stop_area]      end      def name | 
