我一直在阅读Rails Migrations以帮助我开始构建 Rails 项目。
我对 db/migrate 中文件的生成有点困惑。
我一直在设计我的应用程序的方式是从模型开始......尽我所能概述我将在系统中拥有的所有对象。我想使用 rails 迁移生成器自动从这些模型生成迁移文件。
是的,我知道“手动创建迁移很容易”。而且我知道我可以手动完成,但我不明白为什么该工具与预先创建的模型分开。
根据我对 SO 的文章和其他迁移问题的理解,我可以生成如下迁移:
rails generate migration SomeObj field:string some_other_field:integer
我不明白的是,当我的模型已经存在于 SomeObj 时,为什么我需要传入字段?Rails 不能从 some_obj.rb 中检测到它并从那里创建迁移吗?
此外,当我有一个更复杂的模型时,具有 has_many、belongs_to 和 has_to_and_belongs_to_many 关系,如果它自动创建具有正确名称的 JOIN 表和字段(例如 foreign_obj_id、foreign_obj_ids),那就太好了
在以前的项目中,我不必处理迁移,因为我使用了 Mongo+Mongoid - 并且由于 Mongo 工作方式的性质而自动生成集合(不存在的集合在插入或更新时自动创建)。现在有了这个 Rails 应用程序,我正在使用 Postgres(但我确信 MySQL 或任何其他关系数据库也会发生同样的事情)。
反正这种事情就没有帮手吗?我必须手动创建所有这些迁移吗?