rails 3:如何为现有数据库表生成模型

时间:2010-11-07 20:58:39

标签: ruby ruby-on-rails-3 activemodel

我已将database.yml配置为指向我现有的mysql数据库

如何从中生成模型?

rails generate model existing_table_name

只提供一个emty模型..

6 个答案:

答案 0 :(得分:15)

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

答案 1 :(得分:10)

Rails模型不会显示您的字段,但您仍然可以使用它们。请尝试以下方法。假设您有一个名为ModelName的模型和一个名为“name”的字段,请启动Rails控制台并键入:

ModelName.find_by_name('foo')

如果DB中存在名称,您应该看到结果。

Rails虽然不会推断出关系,但如果您的数据库遵循Rails约定,则可以轻松添加它们。

<强>更新

我注意到这种特殊的缺乏显性(“魔法”)是Rails新手混淆的根源。您始终可以查看schema.rb以查看模型和所有字段。此外,如果您希望在模型文件中查看每个模型的模式,则可以使用annotate_models gem,它将db模式放在模型文件顶部的注释中。

答案 2 :(得分:3)

你的答案是:

$ rake db:schema:dump

这将设置一个新的db/schema.db来创建数据库的模式。

答案 3 :(得分:1)

ActiveRecord不解析架构定义。它要求DBM表格defs并动态计算出字段。

如果要通过迁移修改表,则使用模式非常有用。 Schema Dumping and You将帮助您转储它以用作构建迁移的参考。

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

答案 4 :(得分:1)

可以尝试Magic Model Generator

答案 5 :(得分:0)

看看rare_map gem。 https://github.com/wnameless/rare_map 它适用于Rail 3和4。