2010-11-07 120 views
17

我已经配置我的database.yml以指向我现有的mysql数据库rails 3:如何为现有数据库表生成模型

我该如何从中生成模型?

rails generate model existing_table_name 

只给出了一个emty模型..

+0

给你一个空的模型?那是什么意思?你想做什么? :) – s84 2010-11-07 21:02:44

+0

我期望它包含该表的所有字段和关系,但是我得到的是一个从ActiveRecord :: Base – 2010-11-07 21:04:09

+0

派生的空类,除非您创建自己的脚本,否则不可能做什么。 – s84 2010-11-07 23:22:05

回答

9

Rails的模型没有显示你的领域,但你仍然可以使用它们。尝试以下操作。假设你有一个名为MODELNAME模型和一个名为“名称”字段,火了Rails的控制台,输入:

ModelName.find_by_name('foo') 

假设存在一个数据库中的名字,你应该看到的结果。

虽然Rails不能推断出关系,但是如果你的数据库遵循Rails惯例,那么它们很容易被添加。

我已经注意到这个特别缺乏明确性的(“魔术”)更新是混乱的新手到Rails的一个来源。您可以随时查看schema.rb以查看某个地方的模型和所有字段。另外,如果您希望在模型文件中查看每个模型的架构,则可以使用annotate_models gem,它将把db架构置于模型文件顶部的注释中。

+0

哇,谢谢,我从来不知道这可能发生! ehhe。我今天学到了一些新东西。 – 2012-04-22 02:15:11

+0

生成的rails模型在attr_accessible调用中显示您的字段。 – holaSenor 2013-08-20 23:17:29

1

ActiveRecord不解析模式定义。它向DBM询问表格并确定飞行中的字段。

如果您要通过迁移修改表,那么拥有该模式很有用。 Schema Dumping and You将帮助您转储它以用作构建迁移的参考。

ActiveRecord对表命名做出了一些推测,并且期望id字段是以序列号作为类型的主键。进行迁移将帮助您重构表和/或字段名称和类型,但您可以通过DBM的命令行执行相同的操作。你并不需要遵循ActiveRecord的风格,但是这样做有助于避免奇怪的错误,并让AR推断事情,让你的生活更轻松。

1

可以试试Magic Model Generator

+1

注意:适用于Rails 2,不提供Rails 3。 – 2012-02-14 04:05:38

+3

有没有人知道任何其他方法,从Rails 3中的现有模式生成关系等模型? – Arosboro 2012-04-20 20:28:18

15

你可以试试Rmre。它可以为现有模式创建模型,并尝试根据外键信息创建所有关系。

+0

我试过Rmre,但它只创建了模型之间的关系(例如has_many,belongs_to)。它没有创建模型属性。 – Nick 2014-10-22 00:15:51

3

你的答案是:

$ rake db:schema:dump 

,将成立一个新的db/schema.db来创建数据库的架构。