我是PHP程序员已有十多年了,并且正在转向RoR。这是我在PHP世界中习惯的:
在像MySQL WorkBench这样的工具中创建数据库模式 - 并使字段精确地达到我想要的大小而不浪费空间(例如varchar(15),如果它是ip_address)。
使用Datamapper编写模型并将那些确切的字段长度和规格放在那里,这样我的应用就不会尝试输入更大的值。
在我过去两天看到的RoR世界中,这似乎是建议的流程:
使用创建迁移脚本的命令行添加字段/模式,并且显然创建了大的ass字段(例如,“ip_address string”可能在我运行迁移时在db中创建字段varchar(255))。
在模型创建过程中进行验证。
我在这里遗漏了什么吗?在您真正想要创建高度自定义架构的企业级应用程序的RoR世界中,该过程是什么?我是否手动写出迁移脚本?
答案 0 :(得分:2)
您可以在运行迁移之前编辑迁移脚本,以便自定义字段。
答案 1 :(得分:2)
脚手架是您快速入门的用途。但在运行迁移之前,您可以编辑它并添加约束和特定列长度。
模型中指定的验证(在ruby代码中)不具有与数据库上指定的验证/约束相同的安全级别。所以你仍然需要在数据库上定义它们。
虽然可以在没有迁移的情况下使用Rails,但我强烈反对它。在某些情况下,无法避免(例如,在使用旧数据库时)。 使用迁移的最大优点是,不同平台上的数据库模式可以通过不同的阶段保持同步。例如。您的开发和生产数据库。部署代码时,迁移将注意正确迁移数据库。
答案 2 :(得分:1)
是的,如果您需要调整默认值,可以编辑迁移脚本。
另请注意,您不需要 来使用迁移,在迭代数据库开发时它们是“便利”。没有什么说你必须使用它们。活动记录模式不依赖于DB表/字段/等。已创建或定义。
例如,迁移在处理遗留数据库时没用,但您仍然可以围绕它们编写Rails应用程序。