我正在将一个遗留应用程序从 MS-SQL 移动到使用 Rails 访问数据的 Postgres。
MS-SQL 中的列是大写的,在使用 activerecord-sql-server-adapter 时,它们的读取方式如下:
var something = my_model.SomeAttribute
尽管它是恒定的,但它似乎并不重要,因为应用程序只从 MSSQL 数据库中读取数据。
我现在遇到的问题是在迁移到 postgres 之后,它将所有列名等转换为小写(因为 SQL 并不区分大小写)。现在,当我尝试访问SomeAttribute
我的模型时,它会引发一个,ActiveModel::MissingAttributeError
因为它现在是小写的。
症状的一些例子:
p.SomeAttribute
=> ActiveModel::MissingAttributeError: missing attribute: SomeAttribute
p.read_attribute(:SomeAttribute)
=> nil
p.has_attribute?(:SomeAttribute)
=> false
p.read_attribute(:someattribute)
=> 'expected value'
有什么方法可以让 ActiveRecord/ActiveModel 在尝试检索属性名称之前将它们转换为小写?