如何在 Rails 5 数据库迁移中将带句点的字符串映射到符号?

How can I map strings with periods to symbols in a Rails 5 database migration?

我有一个 PSQL 数据库,我需要从中为 Rails 5.4 应用程序提取数据。我对该数据库的控制为零,包括命名约定。

在这个 PSQL 数据库中,假设有一个名为 warehouse_items 的 table,其属性名为 ITEM_WH.SERIAL,其中包含仓库项目的序列号。

然后,假设我尝试为此 table 创建一个将此属性作为主键的迁移:

  def change
    create_table :warehouse_items do |t|
      t.string :ITEM_WH.SERIAL, null: false
    end
  end

正如您想象的那样,在愤怒和恐惧的行列中,这一幕结局很糟糕。 .SERIAL 被解释为符号 :ITEM_WH 上的一种方法,而不是一个内聚的整体 :ITEM_WH.SERIAL.

我知道我可以在这里使用字符串而不是符号(即 'ITEM_WH.SERIAL'),但我听说这样做效率较低。

有没有办法将 SQL 数据库中的字符串映射到迁移中的符号,基本上告诉我的应用程序,“是的,我知道数据库属性是 ITEM_WH.SERIAL 并且我希望您提取该信息,但请将其映射到您自己架构中的符号 :item_wh_serial"?

在数据库迁移中使用字符串而不是符号有那么糟糕吗?

这里我有什么选择?

In this PSQL database, [there is a column] named ITEM_WH.SERIAL ..

  t.string :ITEM_WH.SERIAL, null: false

The scene ends badly .. [it is a ruby syntax error]

选项 1:修复符号文字

t.string :"ITEM_WH.SERIAL", null: false

选项 2:使用字符串而不是符号

t.string "ITEM_WH.SERIAL", null: false