生成用于已删除迁移的Rails模型。

14

我有一个模型客户端,通过以下方式生成:

rails g model Customer name:string

一段时间后,我决定将该模型重命名为customer_type。为了实现这一点,我们编写了另一个迁移。

rails g migration RenameCutomerToCustomerType

一切顺利,直到我需要添加名为customer的模型时。当我输入以下命令时,我开始收到"Another migration is already named create_customer"的提示:

rails g model Customer

我认为这种情况在基于CRUD的项目中非常普遍,请建议如何克服?这是Rails的限制吗?

2个回答

29

只需重新命名旧迁移文件名和类名,这两者都不会影响任何内容。

顺便说一下:这种情况非常少见,所以我认为框架不需要采取特定的行动。


如果你遵循推荐的做法,在版本控制系统下保留schema.rb文件,那么你可以安全地删除旧的迁移。 - iafonov
我建议将旧的迁移文件重命名为 create_customer_1.rb,类名也应该改为 CreateCustomer1。当你在同一个模型中遇到这个问题第二次时,可以使用 create_customer_2.rb,以此类推... - mirelon
我曾经遇到过同样的问题,将我的旧模型从CreateCar重命名为CreateCar2015,文件名也改为create_car_2015,因为它是在2015年制作的。它只检查类/文件名,不检查其他内容。 - shushugah

2

rails destroy model MODELNAME,将删除该模型。


这个不起作用,因为迁移冲突只是基于类名检查初始创建的存在性,而不是它是否被删除。具体的冲突出现在生成的create_model.rb文件上。 - shushugah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接