额外的自定义id除了(并且与id一致)

时间:2014-03-20 10:07:31

标签: ruby activerecord

我想要一个" uuid" (创建行时,(不是真的,但我可以使用自定义函数/ SHA / uuid或者类似的id从我的表中的id存储的内容)。

它应该永远不会改变,以便了解" uuid"总是让我找到正确的行(我有一些既不是ruby也不是active_record的脚本,它们对id-range与我的活动记录表冲突的表进行操作)

我认为我可以做类似的事情:

:after_create {self.uuid = custom_func(self.id); self.save}

创建它,但这并不能确保以后永远不会更改uuid ....

我需要我的activerecord-stuff的正常ID,以及" uuid"对于外部脚本,所以我不打算用uuid替换正常的auto_increment id。

1 个答案:

答案 0 :(得分:1)

您可以使用SecureRandom生成具有所需大小和字符的真实UUID或自定义标记。

before_save :generate_uuid_if_blank

def generate_uuid_if_blank
  self.uuid ||= SecureRandom.uuid
end

def generate_token_if_blank
  self.token ||= SecureRandom.urlsafe_base64(12)
end