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

时间:2011-10-31 15:25:17

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

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

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

在我的数据库中,我创建了相应的列stop_idvehicle_idtimestamp (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

在rake文件中:

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

1 个答案:

答案 0 :(得分:6)

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