数据库切换到代码中的postgresql后表和列名称更改

时间:2016-05-19 12:41:01

标签: ruby-on-rails-3 postgresql activerecord

我们有一个非常老的应用程序,有多个数据库。最近我们决定从MSSQL切换到PostgreSQL。在此过程中,我们决定将所有表和列名称保持为小写。这对我们的代码影响很大。我们希望采用最小化的方法。

问题:

  1. 表名更改 - 我们考虑在模型中覆盖table_name的getter和setter,以避免在许多地方进行更改。创建模块然后在所有模型中包含该模块是一种选择。但是由于“ar-octopus”宝石,我们的制定者无法获得控制权。它实际上劫持了table_name的setter。所以这种方法失败了。
  2. 我们尝试通过覆盖“method_missing”将动态方法(如“find_by_UserID”)映射到“find_by_userid”。但是activerecord中的dynamic_matchers已将该方法标记为私有,因此这也不起作用。
  3. 现在唯一的选择似乎是重构整个代码以适应表和列名称的更改。但我们在视图中使用了查询,直接列访问,如@person [“Name”],并使用了第2点中提到的许多动态函数。因此,即使重构整个代码并完全测试它们,我们也不能确定是否所有代码都已正确更新。

    我们希望重构成为最后一个选项。但是,不要知道任何其他更好的方法。

0 个答案:

没有答案