|
class FrameModel |
|
def components_serialized |
|
components.map do |c| |
|
cgroup = "Additional parts" |
|
cgroup = c.ctype.cgroup if c.ctype.present? |
|
comp = { |
|
component_type: c.name, |
|
description: c.description, |
|
front_or_rear: c.front_or_rear, |
|
year: c.year, |
|
cgroup: cgroup } |
|
comp[:manufacturer] = c.manufacturer.name if c.manufacturer.present? |
|
comp.keys.each { |k| comp.delete(k) unless comp[k].present? } |
|
end |
|
end |
|
|
|
def strip_things |
|
self.name = name.gsub(/\A0\d\s/,' ').gsub(/®|\(r\)|®|©|©/i, ' ').gsub(/\s+/, ' ').strip |
|
if msrp.present? |
|
new_msrp = msrp.gsub(/\s+|\u00a0/,' ').gsub(/msrp:?/i,' ').gsub('$','').gsub(/\s+/, ' ').strip |
|
self.msrp = number_to_currency(new_msrp) |
|
end |
|
if self.frame_description.present? |
|
self.frame_description = self.frame_description.gsub(/\s+|\u00a0/,' ').gsub(/\A[,|.]\s/,'').strip |
|
end |
|
self.slug = Slugifyer.book_slug(self.name) |
|
end |
|
|
|
def serialized |
|
bike = { |
|
frame_model: name, |
|
manufacturer: manufacturer.name, |
|
year: year, |
|
description: frame_description, |
|
original_msrp: msrp, |
|
paint_description: original_paints, |
|
manufacturers_url: find_manufacturer_url |
|
} |
|
if original_paints.kind_of?(Array) |
|
# They all should be arrays - but they're not (some are just single strings) |
|
# Someday we'll fix this... |
|
bike[:paint_description] = original_paints |
|
else |
|
bike[:paint_description] = [original_paints] |
|
end |
|
# sizes: sizes |
|
# bike[:msrp] = msrp |
|
bike[:cycle_type] = cycle_type.name if cycle_type.present? |
|
bike[:rear_wheel_bsd] = wheel_size.iso_bsd if wheel_size.present? |
|
bike[:rear_tire_narrow] = tire_narrow_response if tire_narrow.present? |
|
bike[:stock_photo_url] = image.url if image.present? |
|
bike[:stock_photo_small] = image_url(:medium) if image.present? |
|
|
|
bike.keys.each { |k| bike.delete(k) unless bike[k].present? } |
|
return { |
|
bike: bike, |
|
components: components_serialized |
|
} |
|
end |
|
end |