Ruby on rails 在rails和变形关系中使用UUID作为主键
我正在创建一个将被分散的rails 3应用程序,我需要使用UUID作为我的表的主键,什么是最适合这项工作的gem、插件。我还想知道,如果我使用UUID,是否可以在ActiveRecord中创建多态关系而不使用多态类型列 我创建了一个使用UUID作为键的演示,您应该检查lib/中的模块uuidheloper,以及所有迁移。不需要在数据库中添加主键,只需添加一个索引,因为主键验证字段的唯一性,但我们不需要UUID的唯一性。将其放在lib目录中,并将其作为初始值设定项添加:Ruby on rails 在rails和变形关系中使用UUID作为主键,ruby-on-rails,activerecord,uuid,polymorphism,Ruby On Rails,Activerecord,Uuid,Polymorphism,我正在创建一个将被分散的rails 3应用程序,我需要使用UUID作为我的表的主键,什么是最适合这项工作的gem、插件。我还想知道,如果我使用UUID,是否可以在ActiveRecord中创建多态关系而不使用多态类型列 我创建了一个使用UUID作为键的演示,您应该检查lib/中的模块uuidheloper,以及所有迁移。不需要在数据库中添加主键,只需添加一个索引,因为主键验证字段的唯一性,但我们不需要UUID的唯一性。将其放在lib目录中,并将其作为初始值设定项添加: class ActiveR
class ActiveRecord::Base
set_primary_key :uuid
before_create :set_uuid
def set_uuid
self.uuid = UUID.generate(:compact)
end
end
至于关系,vlad说得对,ActiveRecord需要知道记录在哪个表中才能找到它。如果您想要这种功能,请尝试MongoMapper之类的其他功能。OK,那么选择哪个表包含UUID为12345的记录的标准是什么呢?默认情况下,当您使用UUID作为键时,您会执行多态关系,尝试一些连接,您将看到您可以与任何表进行连接。我已从您提供的链接中签出了您的应用程序。问:如果您的主应用程序使用UUID,您如何处理传递给查找程序的格式错误的UUID?@Boris,感谢您提供的示例应用程序。我修改并扩展了创建COMB guid的功能,并询问这是否是一个好主意:。我发现这篇文章非常适合使用postgreSQL,它现在是我的默认数据库。我认为我可以使用id而不是uuid,无论如何都是一样的。这会更方便。是的,但在这种情况下,请确保将迁移中的id列更改为字符串(或更宽的整数字段)。