对于 SecureRandom.hex(12) id,我应该在 Rails 迁移中使用哪种类型,对于 UUID 来说太短了

问题描述 投票:0回答:1

我需要从一些巨大的 CSV 导入记录。 这些记录具有以下格式的 ID:

056d024481a9
(看起来像
SecureRandom.hex(12)

我不确定在迁移中应该使用什么类型。如果我使用

UUID
则不合适(它不允许我将其分配给 ID 并保存),并且我不能使用
String
作为主键。

我的代码示例是这样的:

order_attributes = row.to_hash.slice(:id, :amount, :created_at)
  orders_list.push(order_attributes)
end

processed_orders = Order.upsert_all(orders_list, returning: %w[id amount])

如果我使用 UUID 类型作为订单 ID,这段代码将不起作用。我被这个问题困扰了,你有什么建议吗?

ruby-on-rails csv migration uuid
1个回答
0
投票

所以首先,您可以使用字符串作为主键。

但是第二,只需将其转换为整数并将其存储在默认值中:

order_attributes[:id] = order_attributes[:id].to_i(16)

请注意,您还可以通过为 CSV 创建自定义转换器来完成此操作,以便在解析过程中自动发生。

© www.soinside.com 2019 - 2024. All rights reserved.