Class: Metrojobb::Category
Constant Summary collapse
- NAME_ID_MAP =
lambda { top_categories = {} data = CSV.read( File.('../../../data/categories.csv', __FILE__) ).map do |row| id, name = row if id.length < 3 top_categories[id] = name else top_id = id[0..1] top_id = id[0] if id.length == 3 top_name = top_categories[top_id] name = "#{top_name} > #{name}" end [id, name] end data.to_h.invert.freeze }.call
- ID_NAME_MAP =
NAME_ID_MAP.invert.freeze
Constants inherited from Model
Instance Attribute Summary collapse
-
#id ⇒ Object
Returns the value of attribute id.
-
#name ⇒ Object
Returns the value of attribute name.
Class Method Summary collapse
Instance Method Summary collapse
- #category_id ⇒ Object
- #to_xml(builder: Builder::XmlMarkup.new(indent: DEFAULT_INDENT)) ⇒ Object
- #validate_known_category ⇒ Object
Methods inherited from Model
Instance Attribute Details
#id ⇒ Object
Returns the value of attribute id.
6 7 8 |
# File 'lib/metrojobb/category.rb', line 6 def id @id end |
#name ⇒ Object
Returns the value of attribute name.
6 7 8 |
# File 'lib/metrojobb/category.rb', line 6 def name @name end |
Class Method Details
.id_name_map ⇒ Object
45 46 47 |
# File 'lib/metrojobb/category.rb', line 45 def self.id_name_map NAME_ID_MAP.invert end |
.ids ⇒ Object
37 38 39 |
# File 'lib/metrojobb/category.rb', line 37 def self.ids NAME_ID_MAP.values end |
.name_id_map ⇒ Object
41 42 43 |
# File 'lib/metrojobb/category.rb', line 41 def self.name_id_map NAME_ID_MAP end |
.names ⇒ Object
33 34 35 |
# File 'lib/metrojobb/category.rb', line 33 def self.names NAME_ID_MAP.keys end |
Instance Method Details
#category_id ⇒ Object
55 56 57 58 59 |
# File 'lib/metrojobb/category.rb', line 55 def category_id self.class.name_id_map[name.presence || id.presence] || id.presence || name.presence end |
#to_xml(builder: Builder::XmlMarkup.new(indent: DEFAULT_INDENT)) ⇒ Object
49 50 51 52 53 |
# File 'lib/metrojobb/category.rb', line 49 def to_xml(builder: Builder::XmlMarkup.new(indent: DEFAULT_INDENT)) builder.category do |node| node.id(category_id.to_s) end end |
#validate_known_category ⇒ Object
61 62 63 64 65 |
# File 'lib/metrojobb/category.rb', line 61 def validate_known_category return if self.class.id_name_map[category_id] errors.add(:category_id, :inclusion) end |