32 lines
978 B
Ruby
32 lines
978 B
Ruby
class Zone < ActiveRecord::Base
|
|
translates :label, :plain_label
|
|
|
|
# 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, lambda {
|
|
includes_translations.order(Zone::Translation.arel_table[:label])
|
|
}
|
|
scope :includes_translations, lambda { includes(:translations) }
|
|
scope :with_plain_label, lambda { |label|
|
|
t = Zone::Translation.arel_table
|
|
includes(:translations).where(t[:plain_label].eq(Zone.plainify_label(label)))
|
|
}
|
|
|
|
def uncertain_label
|
|
@sometimes ? "#{label} sometimes" : label
|
|
end
|
|
|
|
def self.all_plain_labels
|
|
Zone.select([:id]).includes(:translations).all.map(&:plain_label).uniq.sort
|
|
end
|
|
|
|
def self.plainify_label(label)
|
|
plain_label = label.delete('\- /').downcase
|
|
if plain_label.end_with?('item')
|
|
plain_label = plain_label[0..-5]
|
|
end
|
|
plain_label
|
|
end
|
|
end
|