2013-01-21 17:34:39 -08:00
|
|
|
class Zone < ActiveRecord::Base
|
|
|
|
translates :label, :plain_label
|
2010-06-09 19:56:47 -07:00
|
|
|
|
2010-09-08 19:49:39 -07:00
|
|
|
# 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
|
2013-01-21 17:34:39 -08:00
|
|
|
|
|
|
|
scope :alphabetical, lambda {
|
2013-01-26 22:25:52 -08:00
|
|
|
with_translations(I18n.locale).order(Zone::Translation.arel_table[:label])
|
2013-01-21 17:34:39 -08:00
|
|
|
}
|
|
|
|
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)))
|
|
|
|
}
|
2013-02-05 09:52:52 -08:00
|
|
|
scope :for_items, lambda { where(arel_table[:type_id].gt(1)) }
|
2010-06-09 19:56:47 -07:00
|
|
|
|
2010-09-08 19:49:39 -07:00
|
|
|
def uncertain_label
|
|
|
|
@sometimes ? "#{label} sometimes" : label
|
|
|
|
end
|
|
|
|
|
2014-04-02 18:26:53 -07:00
|
|
|
def self.sets
|
|
|
|
{}.tap do |sets|
|
|
|
|
select([:id]).includes(:translations).each do |zone|
|
|
|
|
sets[zone.plain_label] = zone.label
|
|
|
|
end
|
|
|
|
end
|
2010-06-09 19:56:47 -07:00
|
|
|
end
|
2012-10-08 19:20:18 -07:00
|
|
|
|
2013-01-21 17:34:39 -08:00
|
|
|
def self.plainify_label(label)
|
2013-01-26 07:54:29 -08:00
|
|
|
label.delete('\- /').parameterize
|
2012-10-08 19:20:18 -07:00
|
|
|
end
|
2010-05-20 16:04:56 -07:00
|
|
|
end
|