Ruby on rails 尝试创建脚手架,但Rails中已存在迁移
我试图创建一个名为Ruby on rails 尝试创建脚手架,但Rails中已存在迁移,ruby-on-rails,ruby-on-rails-3,activerecord,ruby-on-rails-3.2,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 3,Activerecord,Ruby On Rails 3.2,Ruby On Rails 4,我试图创建一个名为Message的新脚手架,并收到以下错误消息: Another migration is already named create_messages 除了更改模型/控制器/视图的名称(我不想这样做),我还能做什么 发生这种情况的原因是我以前有一个名为Message的脚手架,我将其更改为另一个名称(运行迁移以执行此操作,同时搜索并替换所有文件名和变量/类名)。我明白为什么会收到此错误消息,只是想知道如何继续。快速修复方法是重命名旧迁移(create\u messages)并再次
Message
的新脚手架,并收到以下错误消息:
Another migration is already named create_messages
除了更改模型/控制器/视图的名称(我不想这样做),我还能做什么
发生这种情况的原因是我以前有一个名为
Message
的脚手架,我将其更改为另一个名称(运行迁移以执行此操作,同时搜索并替换所有文件名和变量/类名)。我明白为什么会收到此错误消息,只是想知道如何继续。快速修复方法是重命名旧迁移(create\u messages
)并再次尝试生成scaffold
但建议使用单个create_消息迁移,以便可以通过destroy scaffold命令安全地删除它
更新:
如果已经有了消息模型,那么生成消息脚手架就没有意义了,因为脚手架通过生成控制器、路由等其他工作再次做同样的事情。如果已经有了名为create_messages的迁移,那么您可能已经有了一个消息模型(这意味着不能有另一个同名的)。如果您现在决定在模型上使用脚手架来获取额外的控制器和视图代码,请使用以下命令,其中name是列的名称
rails g scaffold Message name--skip
我更新了这个问题,以表明我曾经有一个名为Message
的scaffold,我完全重命名了它。在这种情况下,--skip
是否有效?我的解决方案是,如果您已经有了消息模型。既然你之前重命名了所有东西,最好的办法就是按照上面所说的去做。重命名迁移,然后在新的消息
模型上执行普通支架。--skip
在运行了rails g model
并且现在意识到要对其使用支架时起作用。我希望能有一个完整的消息的脚手架。我曾经有一个不同的消息
,我完全重命名了它(表、模型、视图、控制器、引用等)。简单地重命名迁移文件是否安全?如果您重命名了其他所有文件,那么您也可以重命名迁移,但重命名迁移不是一个好主意,这可能会给多个环境带来麻烦。不要忘记在旧迁移脚本中重命名类。否则,在“rake db:create:all”之后执行“rake db:migrate”时,将出现“namererror:uninitialized constant”错误。