Activerecord将UUID读取为整数。我需要实际的UUID作为字符串

时间:2019-04-22 15:47:54

标签: ruby-on-rails ruby postgresql uuid

我正在尝试保存与相应记录的哈希名称相同的文件名。

当前数据导入器正在使用Rails,但是数据库和相应的架构是在应用程序外部生成的。

当我在Account中阅读psql模型时,我看到:

select * from accounts where id=1

id                     | 1
first_name             | JOHN
middle_name            |
last_name              | DOE
suffix                 |
dob                    | 1985-11-29 00:00:00
gender                 | M             
hash                   | 5062a455-ad6e-4104-ae49-92d12b1fbd27

当我使用ActiveRecord时,我得到以下信息: Account.first

id: 1,
first_name: "JOHN",
middle_name: "",
last_name: "DOE",
dob: Fri, 29 Nov 1985 00:00:00 UTC +00:00,
gender: "M",
hash: "5062a455-ad6e-4104-ae49-92d12b1fbd27"

当我尝试使用Account.first.hash访问哈希时,我得到-1029718433662254257而不是"5062a455-ad6e-4104-ae49-92d12b1fbd27"

我本质上想做filename = "#{account.hash}.png",但是现在我所有的文件名都是负数而不是UUID。

知道发生了什么吗?

1 个答案:

答案 0 :(得分:2)

hash是Ruby中基于Object的方法。除了更改数据库中字段的名称之外,您实际上无法做任何事情。 https://apidock.com/ruby/Object/hash

  

为此对象生成一个Fixnum哈希值。该功能必须具备   a.eql?(b)暗示a.hash == b.hash的属性。哈希值   由Hash类使用。任何超过哈希容量的哈希值   Fixnum将在使用前被截断。


如评论中所建议,您也可以直接使用

进行访问
# in your view or model
account[:hash]