如何在 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
我有一个 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