例如,我正在管理一个Rails应用程序,其中包含在所有环境中都相关的静态内容,但如果需要,我仍然希望能够修改。例如:州、测验问题、葡萄酒品种等。您的用户内容与这些静态数据之间存在关系,如果需要,我希望能够实时修改它,因此必须将其存储在数据库中。
我一直使用迁移来管理它,以保持团队和所有环境的同步。
有人曾经教条地告诉我,迁移只应用于对数据库的结构更改。我理解这个观点。
我的反驳是,这些主要是“静态”的数据对应用程序的功能至关重要,如果我不自动更新它(每个人都已经接受了运行迁移的培训),那么某些人会遇到失败并搜索问题所在,然后才发现表中添加了新的强制字段,并且他们需要导入一些内容。因此,我只需在迁移中执行此操作。这也使得部署更加简单和安全。
我具体的做法是保持我的测试装置文件与良好的数据同步(这也有助于让我编写更加真实的测试),并在必要时重新导入。我使用
无论如何,我认为这种YAML + SQL的过程可以少些爆炸,但我也觉得它非常笨拙。我想知道人们如何管理这种数据。Rails中是否有其他技巧可用?是否有用于管理静态数据的Gems?
我一直使用迁移来管理它,以保持团队和所有环境的同步。
有人曾经教条地告诉我,迁移只应用于对数据库的结构更改。我理解这个观点。
我的反驳是,这些主要是“静态”的数据对应用程序的功能至关重要,如果我不自动更新它(每个人都已经接受了运行迁移的培训),那么某些人会遇到失败并搜索问题所在,然后才发现表中添加了新的强制字段,并且他们需要导入一些内容。因此,我只需在迁移中执行此操作。这也使得部署更加简单和安全。
我具体的做法是保持我的测试装置文件与良好的数据同步(这也有助于让我编写更加真实的测试),并在必要时重新导入。我使用
connection.execute "some SQL"
而不是使用模型,因为我发现Model.reset_column_information
+一堆Model.create
有时会在每个人立即更新后起作用,但当我几周后推送到生产环境时,它最终会爆炸,因为我在模型上有新的验证与两周前的迁移冲突。无论如何,我认为这种YAML + SQL的过程可以少些爆炸,但我也觉得它非常笨拙。我想知道人们如何管理这种数据。Rails中是否有其他技巧可用?是否有用于管理静态数据的Gems?