可以为模型生成迁移吗?

时间:2011-02-26 17:42:42

标签: ruby-on-rails

我已经创建了一个用户模型,其中包含我想要的所有属性。

现在我要运行

rails g scaffold用户

但是当然它不起作用b / c已经有用户模型。

我是否可以为当前用户模型生成迁移(生成含义使用当前模型创建迁移脚本,以便稍后重新运行)。

这样我就可以破坏模型,运行脚手架,然后使用我之前设置的旧列运行迁移。

可能?

2 个答案:

答案 0 :(得分:3)

您可以使用rails generate migration手动创建迁移。这是该函数帮助的输出:

Usage:
  rails generate migration NAME [field:type field:type] [options]

Options:
  -o, --orm=NAME  # Orm to be invoked
                  # Default: active_record

Runtime options:
  -f, [--force]    # Overwrite files that already exist
  -p, [--pretend]  # Run but do not make any changes
  -q, [--quiet]    # Supress status output
  -s, [--skip]     # Skip files that already exist

Description:
    Create rails files for migration generator.

答案 1 :(得分:0)

当您使用非数据库支持的模型时,可能会发生这种情况,然后您决定是否希望它,并扩展ActiveRecord::Base并意识到没有表。我会进入Rails控制台,看看该类的方法。你可以像这样打印setter方法:

>> y Model.instance_methods(false).grep /\=/ # "Model" is the name of your class

然后我会像普通的那样创建一个新的迁移,并用它们的类型定义列。例如如果您的Model具有string类型的名称列rails g migration Model name:string。您可能想要删除一些生成的文件。如果因为名称匹配而无效,我会检查是否有强制选项,或者我暂时重命名现有的模型类,然后在生成迁移后将其命名为。