diff --git a/app/models/item.rb b/app/models/item.rb index 28660e96..5ef07b51 100644 --- a/app/models/item.rb +++ b/app/models/item.rb @@ -283,23 +283,9 @@ class Item < ApplicationRecord occupied_zones.map(&:id) end - def occupied_zones(options={}) - options[:scope] ||= Zone.all - all_body_ids = [] - zone_body_ids = {} - selected_assets = swf_assets.each do |swf_asset| - zone_body_ids[swf_asset.zone_id] ||= [] - body_ids = zone_body_ids[swf_asset.zone_id] - body_ids << swf_asset.body_id unless body_ids.include?(swf_asset.body_id) - all_body_ids << swf_asset.body_id unless all_body_ids.include?(swf_asset.body_id) - end - zones = options[:scope].find(zone_body_ids.keys) - zones_by_id = zones.inject({}) { |h, z| h[z.id] = z; h } - total_body_ids = all_body_ids.size - zone_body_ids.each do |zone_id, body_ids| - zones_by_id[zone_id].sometimes = true if body_ids.size < total_body_ids - end - zones + def occupied_zones + zone_ids = swf_assets.map(&:zone_id).uniq + Zone.find(zone_ids) end def affected_zones diff --git a/app/models/zone.rb b/app/models/zone.rb index 92e6ad93..e9cfd3cf 100644 --- a/app/models/zone.rb +++ b/app/models/zone.rb @@ -1,8 +1,4 @@ class Zone < ActiveRecord::Base - # When selecting zones that an asset occupies, we allow the zone to set - # whether or not the zone is "sometimes" occupied. This is false by default. - attr_writer :sometimes - scope :alphabetical, -> { order(:label) } scope :matching_label, ->(label) { where(plain_label: Zone.plainify_label(label)) @@ -13,10 +9,6 @@ class Zone < ActiveRecord::Base super({only: [:id, :depth, :label]}.merge(options)) end - def uncertain_label - @sometimes ? "#{label} sometimes" : label - end - def is_commonly_used_by_items # Zone metadata marks item zones with types 2, 3, and 4. But also, in # practice, the Biology Effects zone (type 1, ID 4) has been used for a few