我已经创建了一个用户模型,其中包含我想要的所有属性。
现在我要运行
rails g scaffold用户
但是当然它不起作用b / c已经有用户模型。
我是否可以为当前用户模型生成迁移(生成含义使用当前模型创建迁移脚本,以便稍后重新运行)。
这样我就可以破坏模型,运行脚手架,然后使用我之前设置的旧列运行迁移。
可能?
答案 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
。您可能想要删除一些生成的文件。如果因为名称匹配而无效,我会检查是否有强制选项,或者我暂时重命名现有的模型类,然后在生成迁移后将其命名为。