我有一个新的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`
app / models / doodad.rb 中的Class Doodad未加载。这段代码很好,因为当我执行以下操作时:
> 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 的内容中进行猴子修补时,一切都很好,Doodad称为“Uno”已保存到数据库中。
如何让Rails加载连接到旧表的模型类?
答案 0 :(得分:0)
D'哦!我在 app / models / doodads.rb 中上课了。一旦我将其重命名为 app / models / doodad.rb ,一切都很好。
我猜每个文件的一个模型类的约定与Rails模型文件命名约定(filename = classname.underscore +“。rb”)是绝对“必须”才能使其工作。