我想要一个" 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。
答案 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