返回带小写列的模型

时间:2011-02-03 07:58:27

标签: ruby-on-rails ruby

我有一个使用UPPERCASE表列访问旧数据库的rails程序。

我希望能够输入user.firstname而不是user.FIRSTNAME

如何让ActiveRecord检索这些列名的小写版本以允许我在模型中使用小写属性?

2 个答案:

答案 0 :(得分:0)

使用迁移更改列名可能更容易。否则,您将不得不更改正在使用的宝石,然后将它们打包在供应商/宝石中,以便在它们降级时保持不变。

  1. 脚本/生成迁移down_case_table_names_and_columns
  2. 撰写迁移
  3. rake db:migrate
  4. 对于每张桌子:

    rename_table :OLD_NAME, :new_name
    

    对于每一栏:

    rename_column :COLUMN_NAME, :column_name
    

    的问题

    您可能不必更改表的名称,fyi - 您可能会收到有关更改表名的错误。我从来没有更改过表名,所以我不知道这是否有效。如果不改变列名,就没有问题。

答案 1 :(得分:0)

如果更改列名不可行,这可能是处理此问题的最佳方法:https://github.com/reidmix/legacy_mappings