Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在rails和变形关系中使用UUID作为主键_Ruby On Rails_Activerecord_Uuid_Polymorphism - Fatal编程技术网

Ruby on rails 在rails和变形关系中使用UUID作为主键

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

我正在创建一个将被分散的rails 3应用程序,我需要使用UUID作为我的表的主键,什么是最适合这项工作的gem、插件。我还想知道,如果我使用UUID,是否可以在ActiveRecord中创建多态关系而不使用多态类型列

我创建了一个使用UUID作为键的演示,您应该检查lib/中的模块uuidheloper,以及所有迁移。不需要在数据库中添加主键,只需添加一个索引,因为主键验证字段的唯一性,但我们不需要UUID的唯一性。

将其放在lib目录中,并将其作为初始值设定项添加:

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列更改为字符串(或更宽的整数字段)。