gpt4 book ai didi

ruby-on-rails - 处理我想在所有 Rails 环境中使用的大多数静态数据的最佳实践是什么?

转载 作者:太空狗 更新时间:2023-10-30 01:58:25 26 4
gpt4 key购买 nike

例如,我正在管理一个 Rails 应用程序,该应用程序具有与我的所有环境相关的静态内容,但我仍然希望能够在需要时进行修改。示例:状态、测验问题、 Wine 品种等。您的用户内容与这些静态数据之间存在关系,我希望能够在需要时对其进行实时修改,因此必须将其存储在数据库中。

我一直通过迁移来解决这个问题,以使我的团队和我的所有环境保持同步。

有人教条地告诉我,迁移应该只针对数据库的结构更改。我明白了。

我的反对意见是,这些主要是“静态”的数据对于应用程序的运行至关重要,如果我不自动更新它(每个人都已经接受过运行迁移的培训),就会有人失败并四处寻找问题出在哪里,在他们发现新的必填字段已添加到表中并且他们需要导入某些内容之前。所以我只是在迁移中这样做。这也使部署更加简单和安全。

我一直在做的具体方法是使我的测试夹具文件与良好数据保持最新(这有让我编写更真实的测试的副作用)并在必要时重新导入它。我使用 connection.execute "some SQL" 而不是模型,因为我发现 Model.reset_column_information + 一堆 Model.create 如果每个人都立即更新,有时会奏效,但当我插入生产时,比方说几周后,最终会在我面前爆炸,因为我会对模型进行更新的验证,这会与 2 周前的迁移发生冲突。

无论如何,我认为这个 YAML + SQL 过程的工作爆炸性要小一些,但我也觉得它很笨拙。我想知道人们如何管理此类数据。 Rails 中还有其他可用的技巧吗?是否有帮助管理静态数据的 Gem?

最佳答案

在我使用的一个应用程序中,我们使用一个称为“DictionaryTerms”的概念来查找值。每个术语都有它所属的类别。在我们的案例中,它是人口统计术语(因此是屏幕截图中的数据),包括与性别、种族和位置(例如州)等有关的术语。

enter image description here

然后您可以使用典型的 CRUD 操作来添加/删除/编辑词典术语。如果您需要在环境之间迁移术语,您可以编写一个 rake 任务,通过 CSV 文件将数据从一个数据库导出/导入到另一个数据库。

如果您不想导入/导出,那么您可能希望将该数据与应用程序本身分开托管,通过 JSON 请求之类的方式访问,并让您的应用程序从该请求中提取条款。如果您的案例很简单,这似乎需要做很多额外的工作。

关于ruby-on-rails - 处理我想在所有 Rails 环境中使用的大多数静态数据的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7529963/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com