Rails 僵尸 1:Table 名称与访问方法不匹配?

Rails for Zombies 1: Table names don't match access methods?

我刚刚进入第一个 Rails 僵尸课程,这是关于数据库上的 CRUD。

我不明白也没有解释的是,有一个名为 Zombies 的 table,但您可以使用 Zombie.find 访问它。刚刚完成标准 Ruby 的课程,对我来说,它看起来像是 Class 和方法,但 Class 与 table 名称不同。

在教程视频中也是如此——他的 table 被称为 tweets,但他使用 Tweet.find 访问它。不应该是tweets.find吗?

为什么 table 名称与您访问那些 table 的方式不匹配?你怎么知道要引用哪个名称 table 就好像它与 table 的名称不同一样?

Rails 自动复数化您的型号名称,即 Zombie,用作 table 名称 zombies。这个想法是模型名称代表一个僵尸,而 table 代表许多僵尸。当您搜索 table 时,使用名称 Zombies 会更有意义,但是 rails 会为您的模型创建一个名为 class 的 Zombie,而不是创建另一个class 命名为 Zombies,rails 通过继承为您的 Zombie class 提供方法,允许您搜索 table.

在代码的不同位置,您必须使用模型名称 Zombie,而在代码的其他位置,您必须使用 table 名称 zombies--经验和文档以及仔细阅读您的教程将提醒您使用哪个。

请注意,rails 会将您的型号名称复数化 Mouse——不是 mices——而是 mice。

Having just completed a course on standard Ruby, that to me looks like a Class

是的,Zombie 是一个 class 名字。如果您查看 app/models/zombie.rb,您将看到 class 定义。

而且,如果您查看 db/migrate,您应该会看到一个名为 20130731063014_create_zombies.rb 的文件,并且在该文件中将有一个名为 CreateZombies 的 class。 rails 到处都使用 classes。