class Activity < ApplicationRecord include HasWhatnot belongs_to :location, optional: true validates :gid, :name, :description, presence: true attribute :innate, :boolean, default: false def costs costs = [] self.whatnot[:cost].each do |cost| case cost[:type] when "item" costs.push "#{cost[:quantity]} #{Item.find_by_gid(cost[:gid]).name}" end end costs end def requirements requirements = [] self.whatnot[:requirements].each do |req| case req[:type] when "skill" requirements.push "level #{req[:level]} #{Skill.find_by_gid(req[:gid]).name}" when "hearth_amenity" requirements.push "level #{req[:level]} #{HearthAmenity.find_by_gid(req[:gid]).name}" else raise "Invalid requirement type string (#{req[:type]})" end end requirements end end