ivaravko
+5
Для выше приведенного кейса, когда выделяются классы TrainLocation, CopterLocation и т.д., удобней использовать STI. Так как реляционные БД не поддерживают наследование, а хранение каждого класса в отдельной таблице увеличивате количество JOIN`ов, используется паттерн «Наследование с единой таблицей» — поля всех классов иерархии записываются в одну таблицу.
ivaravko
+2
Теперь это домашняя страница для браузера.
ivaravko
+1
Для этого нужно писать еще один топик. Посмотрите мастр-класс Николая Алименкова, там есть теория и практика: часть 1 и часть 2.
ivaravko
+2
C Ajax все просто, нужно ожидать пока выполняется загрузка:
@page.wait_until(5, "Call not returned within 5 seconds") do
  @page.text.include? "Value returned from Ajax call"
end

Подробнее на вики github.com/cheezy/page-object/wiki/Ajax-Calls