Emi Matchu
a3dcaa0f0e
Adding new functionality to the item search JSON endpoint, and adding an adapter layer to match the GQL format! Hopefully this will be pretty drop-in-able, we'll see!
31 lines
1,014 B
Ruby
31 lines
1,014 B
Ruby
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))
|
|
}
|
|
scope :for_items, -> { where(arel_table[:type_id].gt(1)) }
|
|
|
|
def as_json(options={})
|
|
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
|
|
# items too. So, that's what we return true for!
|
|
# TODO: It'd probably be better to make this a database field?
|
|
[2, 3, 4].include?(type_id) || id == 4
|
|
end
|
|
|
|
def self.plainify_label(label)
|
|
label.delete('\- /').parameterize
|
|
end
|
|
end
|