Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails中DB模式的最佳实践_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails RubyonRails中DB模式的最佳实践

Ruby on rails RubyonRails中DB模式的最佳实践,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我是一名PHP程序员已经有十多年了,现在正在向RoR迈进。以下是我在PHP世界中的习惯: 在MySQL WorkBench之类的工具中创建DB模式,并使字段的大小精确到我想要的大小,而不浪费空间,例如,如果是ip_地址,则使用varchar15 使用Datamapper编写模型,并将精确的字段长度和规格放在其中,这样我的应用程序就不会尝试输入任何更大的值 从我在过去两天所看到的RoR世界来看,这似乎是建议的流程: 使用命令行添加字段/模式,该命令行创建了迁移脚本,并且显然创建了较大的ass字段,

我是一名PHP程序员已经有十多年了,现在正在向RoR迈进。以下是我在PHP世界中的习惯:

在MySQL WorkBench之类的工具中创建DB模式,并使字段的大小精确到我想要的大小,而不浪费空间,例如,如果是ip_地址,则使用varchar15

使用Datamapper编写模型,并将精确的字段长度和规格放在其中,这样我的应用程序就不会尝试输入任何更大的值

从我在过去两天所看到的RoR世界来看,这似乎是建议的流程:

使用命令行添加字段/模式,该命令行创建了迁移脚本,并且显然创建了较大的ass字段,例如,当我运行迁移时,ip_地址字符串可能正在数据库中创建字段varchar255

在模型创建期间进行验证


我是不是遗漏了什么?对于企业级应用程序,在RoR世界中,您实际希望创建高度定制的模式的过程是什么?我是否手动写出迁移脚本?

您可以在运行迁移之前编辑迁移脚本,以便自定义字段。

是的,如果需要调整默认值,请编辑迁移脚本

还请注意,您不需要使用迁移,它们在迭代DB开发时非常方便。没有什么规定你必须使用它们。活动记录模式不依赖于DB表/字段/等的创建或定义方式


例如,在处理遗留DBs时,迁移是无用的,但您仍然可以围绕它们编写Rails应用程序。

脚手架是快速入门的工具。但在运行迁移之前,您可以编辑它并添加约束和特定的列长度

ruby代码中模型中指定的验证与数据库中指定的验证/约束具有不同的安全级别。因此,您仍然需要在数据库中定义它们

虽然可以在不迁移的情况下使用Rails,但我强烈建议不要这样做。例如,在某些情况下,在处理遗留数据库时无法避免这种情况。 使用迁移的最大优点是,跨不同平台的数据库模式可以在不同阶段保持同步。例如,您的开发和生产数据库。在部署代码时,迁移将确保正确迁移数据库