class Item < ApplicationRecord include HasWhatnot enum equip_slot: [:mainhand, :offhand, :head, :neck, :back, :torso, :grip, :left_ring, :right_ring, :waist, :legs, :feet, :curio] validates :gid, :name, :description, presence: true def equipment? self.whatnot && self.whatnot[:equip_slots]&.any? end def usable? self.whatnot && self.whatnot[:use_effects]&.any? end def equip_slots return [] unless self.equipment? self.whatnot[:equip_slots].map { |data| data.to_sym } end end