【发布时间】:2013-09-02 12:25:48
【问题描述】:
我正在开发一个在几个不同机构中运行的 Rails 应用程序。它必须与每个旧数据库接口。所有这些数据库都是Oracle,所有的列名和表名都是小写的。
其中一家机构已将其数据库移至 MS SQL 数据库。结构都是一样的,我已经将应用程序连接到它,看起来一切正常,除了一个问题。
在 MS SQL db 上,所有表名和列名现在都是大写的。
有没有办法让活动记录自动将所有对数据库的调用转换为大写?我可以在某处覆盖的方法?
所以,我认为(还不能进行很多测试)我已经修复了列名部分。我基本完成了
column_names.each {|c| alias_attribute c.downcase, c}
在每个受影响的模型中(尽管我已将其固定在可以包含或不包含的模块中,具体取决于适配器。
我正在尝试找出可以合并到同一个模块中的表名的处理方法。
【问题讨论】:
-
好的。那么,这个问题有什么问题值得反对呢?
-
我认为你的问题是一个很好的问题,但它并没有表明你为解决问题付出了任何努力。如果看起来你只是想让别人为你做你的工作,人们通常不会愿意提供帮助。您是否尝试过查看 ruby 文档以了解它是如何计算表名的?有一些明显的关键字可以让你开始,例如
table_name。 -
很公平。可能没有详细说明我在问题中尝试过的内容。我摆弄着重新定义表名。所有受影响的模型都有一个超类,它创建与旧数据库的连接,所以我希望我可以通过升级超方法重新定义其中的 table_name 方法,但它不起作用;我想是因为它最终只是向我的超类询问一个表名,当然,它没有。
-
上次我使用MS SQL,默认是表/列名不区分大小写。你的情况不是这样吗?
-
啊,这很有趣。它肯定是代理大小写敏感的。不幸的是,我对 MS SQL 知之甚少,我不得不远程与数据库管理员打交道。我想知道它是否会询问他们是否有区分大小写的设置。
标签: sql ruby-on-rails sql-server activerecord