Sha256: 3111b7fe00268c58786772647c1e842652902bb4123396deaf7f5772a6ec05eb
Contents?: true
Size: 835 Bytes
Versions: 1
Compression:
Stored size: 835 Bytes
Contents
require 'csv' require 'active_model' module Metrojobb class Category < Model attr_accessor :id, :name NAME_ID_MAP = CSV.read( File.expand_path('../../../data/categories.csv', __FILE__) ).to_h.invert.freeze ID_NAME_MAP = NAME_ID_MAP.invert.freeze validate :validate_known_category def self.name_id_map NAME_ID_MAP end def self.id_name_map ID_NAME_MAP end def to_xml(builder: Builder::XmlMarkup.new(indent: DEFAULT_INDENT)) builder.category do |node| node.id(category_id.to_s) end end def category_id NAME_ID_MAP[name.presence || id.presence] || id.presence || name.presence end def validate_known_category return if ID_NAME_MAP[category_id] errors.add(:category_id, :inclusion) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
metrojobb-0.3.0 | lib/metrojobb/category.rb |