在导轨和多态关系中使用UUID作为主键

时间:2010-04-16 16:19:58

标签: ruby-on-rails activerecord uuid polymorphism

我正在创建一个分散的rails 3应用程序,我需要为我的表使用 UUID 作为 主键 ,将是Job的最佳宝石插件。我还想知道是否可以在不使用polymorphicable_type列的情况下使用 ActiveRecord 多态关系,假设我正在使用UUID。

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

1 个答案:

答案 0 :(得分:6)

this file放在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等其他功能。