`

使用UUID作为activerecored模型的主键

阅读更多
有时候,使用数据库中自带的“auto increment”可能不能满足需求,这个时候如果是真的需要一个唯一的可以跨数据库应用的主键时,我们得使用UUID(Universally Unique IDentifier)来做这事。

由UUID生成的主键是唯一的,如12f186e6-687e-11ad-843e-001b632783f1这个随机字符串。

创建表(Model)
create_table :posts, :id => false do |t|
  t.string :uuid, :limit => 36, :primary => true
end


Model中的设置
class Post < ActiveRecord::Base
  set_primary_key "uuid"
end


安装UUID生成器gem:
sudo gem install uuidtools



在lib目录中创建UUIDHelper模块
require 'rubygems'
require 'uuidtools'
 
module UUIDHelper
  def before_create()
    self.uuid = UUID.timestamp_create().to_s
  end
end


然后在Model中将UUID生成模块插进来:
class Post < ActiveRecord::Base
  set_primary_key "uuid"
  include UUIDHelper
end



现在,当你新增一个Post记录,保存后,uuid字段会自动填充uuid序列。你还期待什么呢?
分享到:
评论

相关推荐

    Hibernate用UUID作为主键的Demo

    本教程将深入探讨如何在Hibernate中使用UUID(通用唯一识别码)作为实体类的主键。UUID是一种能确保全球范围内唯一性的标识符,其长度通常为32个字符的十六进制字符串。 ### 1. Hibernate简介 Hibernate是一个开源...

    公司实际项目中采用UUID算法生成主键的工具类

    公司实际项目中采用UUID算法生成主键的工具类,有需要的朋友们可以拿去

    这个包可以让您轻松地在Laravel模型中使用UUID

    标题中的“这个包可以让您轻松地在Laravel模型中使用UUID”表明我们正在讨论一个针对Laravel框架的扩展包,它的主要功能是帮助开发者在Laravel应用中的模型中集成和管理UUID(通用唯一标识符)作为主键。Laravel是一...

    深入分析mysql为什么不推荐使用uuid或者雪花id作为主键

    1.1:要说明这个问题,我们首先来建立三张表,分别是user_auto_key,user_uuid,user_random_key,分别表示自动增长的主键,uuid作为主键,随机key作为主键,其它我们完全保持不变.根据控制变量法,我们只把每个表的主键使用...

    spring boot整合mybatis利用Mysql实现主键UUID的方法

    由于使用了UUID作为主键,插入数据时MyBatis会自动为新记录生成一个UUID。例如: ```java import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Select; public interface ...

    laravel-optikey:在Laravel中使用UUID或Ulid作为可选键或主键

    在Laravel中使用UUID或Ulid作为可选键或主键。 composer require riipandi/laravel-optikey 该软件包添加了一个非常简单的特征,可以为您的模型自动生成UUID或Ulid。 快速开始 更新您的架构 首先,您需要在迁移中...

    自动生成主键uuid.zip

    总结来说,"自动生成主键uuid.zip"中的内容可能涉及到如何在Java中使用UUID生成32位的无序和有序ID,这对于数据库主键或其他需要全局唯一标识的场景非常有用。通过理解UUID的生成机制和结合其他数据,开发者可以定制...

    Laravel开发-eloquent-uuid

    2. **配置模型**:在模型中使用新安装的Trait,如`Spatie\Uuid\Uuid`,并设置主键为UUID。例如: ```php use Illuminate\Database\Eloquent\Model; use Spatie\Uuid\Uuid; class MyModel extends Model { use...

    Laravel开发-laravel-trait-uuid

    总的来说,`laravel-trait-uuid`为Laravel开发者提供了一个简单、优雅的方式,来在模型中使用UUID作为主键,增强了系统的灵活性和安全性。通过理解这一特性的工作原理,你可以更好地利用它来优化你的Laravel项目。

    PB生成UUID.zip

    标题中的"PB生成UUID"指的是在编程中使用Protocol Buffers(简称PB)生成Universally Unique Identifier(UUID)。UUID是一个128位的数字,通常表示为32个十六进制数字,用于唯一标识网络中的对象。它在分布式系统、...

    浅谈java获取UUID与UUID的校验

    在实际应用中,我们可以使用 UUID 来生成唯一的 ID,例如在数据库中生成一个唯一的主键。同时,我们也可以使用 UUID 来标识一些信息,例如用户的 ID、订单的 ID 等。 此外,我们还可以使用 UUID 来实现一些安全机制...

    UUID封装直接调用直接下载用

    在“UUID封装直接调用直接下载用”的场景下,可能是指在下载过程中利用UUID作为唯一标识来跟踪下载任务。例如,每个下载任务可以关联一个UUID,这样就可以在多任务下载环境中区分不同的下载请求,便于管理和控制。...

    laravel-uuid-model:创建主键为UUID的非增量Laravel模型

    创建主键为UUID的非增量模型。 安装 通过作曲家 $ composer require stevenmaguire/laravel-uuid-model 用法 扩展UuidModel class User extends Stevenmaguire \ Laravel \ UuidModel { // } 默认情况下,它扩展...

    Laravel开发-laravel-model-uuid

    "Laravel开发-laravel-model-uuid"的主题旨在介绍如何在Laravel模型中优雅地集成和使用UUID作为主键。 1. **什么是UUID?** UUID是一个128位的数字,由16个字节组成,可以确保在全球范围内的唯一性。通常以32个...

    Linux如何使用UUID挂载挂载数据盘

    ### Linux使用UUID挂载数据盘详解 #### 一、引言 在Linux系统中,挂载数据盘是一项常见的任务,特别是在使用云服务提供商(如天翼云)时,用户通常会遇到除了默认的系统盘外,还有一个或多个可扩展的数据盘。本文将...

Global site tag (gtag.js) - Google Analytics