Moscow Metro gem
Скачен 4 154 раза
Что оно делает
Список станций и линий Московского метрополитена + хелперы.
Как оно это делает
Предполагается 2 варианта использования этого джема:
- Использовать gem в качестве базы данных, не создавая таблиц в своей БД. Если gem отстанет от жизни, можно форкнуть или прислать PR.
- Хранить станции и линии в БД, а gem использовать для валидаций.
1. Использовать gem в качестве базы данных
Для данных о станциях и линиях есть ActiveModel-подобные классы с методами поиска:
MoscowMetro::Station.all #=> Array
MoscowMetro::Line.all #=> Array
MoscowMetro::Line.find_by_uid("11A") #=> #
MoscowMetro::Line.find_by_uid("404") #=> nil
и attribute-readers у экземпляров:
line = MoscowMetro::Line.all.first #=> #<struct MoscowMetro::Line::Record...>
line.color #=> "#f91f22"
line.name #=> "Сокольническая"
line.uid #=> "1"
station = MoscowMetro::Station.all.first #=> #<struct MoscowMetro::Station::Record...>
station.coordinates #=> [37.7191, 55.7524] || []
station.latitude #=> 37.7191 || nil
station.longitude #=> 55.7524 || nil
station.line_uid #=> "8"
station.name #=> "Авиамоторная"
station.name_en #=> "Aviamotornaya" || nil
station.name_uniq #=> false || true
2. Использовать gem для валидаций
Например, так:
# models/metro/station.rb
class Metro::Station < ActiveRecord::Base
validates :name, inclusion: { in: MoscowMetro::Station.names }
end