我有一个新的rails应用程序,需要从一个名为"Doo_dad"的遗留表中访问数据,具有一个名为"id"的自动递增主键,和一个名为"name"的字符串字段。
所以我创建了一个名为app/models/doodad的新模型文件。rb,看起来像这样:class Doodad < ActiveRecord::Base
set_table_name "Doo_dad"
end
当我加载Rails控制台时,我可以访问Rails生成的模型,但是我看不到类
> rails console
irb> Doodad.class
NameError: uninitialized constant Doodad
(from (irb):1: in `evaluate`
类Doodad在app/models/Doodad。没有加载rb。这段代码很好,因为当我执行以下操作时:
> rails console
irb> class Doodad < ActiveRecord::Base
irb> set_table_name "Doo_dad"
irb> end
irb> Doodad.class
=> OK
irb> d=Doodad.new
irb> d.name="Uno"
irb> d.save
=> OK no errors
。当我在app/models/doodad的内容中进行猴子补丁时。rb,一切正常,名为"Uno"的Doodad被保存到数据库中。
我怎么能让Rails加载我的模型类挂钩到遗留表?
D'oh!我有类在app/models/doodads.rb。有一次我把它重命名为app/models/doodad。rb,一切正常。
我猜每个文件一个模型类的约定与Rails模型文件命名约定(filename=classname.underscore+".rb")是绝对的"必须"得到这个工作。