Rails генерирует некорректный SQL из объекта ActiveRecord - PullRequest
2 голосов
/ 31 октября 2011

У меня есть простой объект ActiveRecord, представляющий примерное время прибытия.

class Eta < ActiveRecord::Base
    belongs_to :stop
    belongs_to :vehicle
    validates :timestamp, :presence => true
end

В своей базе данных я создал соответствующие столбцы stop_id, vehicle_id и timestamp (of type datetime).

У меня установлена ​​задача rake для выполнения операций с этой таблицей, но она генерирует SQL, который не имеет смысла. Если я попытаюсь запустить:

for eta in Eta.all
    puts eta.timestamp
end

Он пытается SELECT * FROM eta, однако таблица называется etas, а не eta.

Множественное именование базы данных соответствует остальным таблицам, созданным из объектов ActiveRecord, и я успешно создал подобный объект ActiveRecord, который работает правильно.

class PrecedingCoord < ActiveRecord::Base
    belongs_to :stop
    belongs_to :route
    belongs_to :coord
end

В файле граблей:

for eta in PrecedingCoord.all
    puts eta.coord.latitude
end

1 Ответ

6 голосов
/ 31 октября 2011

Rails устанавливает множественное число ETA как ETA.

> 'eta'.pluralize
=> "eta"

Если вы уже создали таблицу с именем etas, вы можете установить ее в своей модели:

class Eta < ActiveRecord::Base
  set_table_name "etas"

  belongs_to :stop
  belongs_to :vehicle
  validates :timestamp, :presence => true
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...