0

我有一个新的 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中的类 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的内容中进行猴子修补时,一切都很好,并且名为“Uno”的 Doodad 被保存到数据库中。

如何让 Rails 加载连接到旧表的模型类?

4

1 回答 1

0

哦!我在app/models/doodads.rb 上课。一旦我将它重命名为app/models/doodad.rb,一切都很好。

我猜想每个文件一个模型类的约定和 Rails 模型文件命名约定(filename=classname.underscore+".rb")是实现这个工作的绝对“必须”。

于 2011-10-24T22:10:47.823 回答