Rails从ActiveRecord对象生成不正确的SQL

Aus*_*ner 2 ruby activerecord ruby-on-rails ruby-on-rails-3

我有一个简单的ActiveRecord对象,表示估计的到达时间.

class Eta < ActiveRecord::Base
    belongs_to :stop
    belongs_to :vehicle
    validates :timestamp, :presence => true
end
Run Code Online (Sandbox Code Playgroud)

在我的数据库,我创建了相应的栏目stop_id,vehicle_idtimestamp (of type datetime).

我有一个rake任务设置来执行此表上的操作,但它生成的SQL没有意义.如果我尝试运行:

for eta in Eta.all
    puts eta.timestamp
end
Run Code Online (Sandbox Code Playgroud)

它尝试SELECT * FROM eta,但表是命名etas,而不是eta.

复数数据库命名与从ActiveRecord对象创建的其余表一致,我成功创建了一个正常工作的类似ActiveRecord对象.

class PrecedingCoord < ActiveRecord::Base
    belongs_to :stop
    belongs_to :route
    belongs_to :coord
end
Run Code Online (Sandbox Code Playgroud)

在rake文件中:

for eta in PrecedingCoord.all
    puts eta.coord.latitude
end
Run Code Online (Sandbox Code Playgroud)

Dou*_*rer 6

Rails将ETA的复数设置为ETA.

> 'eta'.pluralize
=> "eta"
Run Code Online (Sandbox Code Playgroud)

如果您已经创建了一个名为的表etas,则可以在模型中进行设置:

class Eta < ActiveRecord::Base
  set_table_name "etas"

  belongs_to :stop
  belongs_to :vehicle
  validates :timestamp, :presence => true
end
Run Code Online (Sandbox Code Playgroud)