использование UUID в качестве первичного ключа в рельсах и полиморфных отношениях - PullRequest
4 голосов
/ 16 апреля 2010

Я создаю приложение rails 3, которое будет децентрализовано, и мне нужно использовать UUID в качестве первичного ключа для моих таблиц, что будет лучший драгоценный камень, плагин для работы. Я также хотел бы знать, возможно ли сделать в ActiveRecord полиморфные отношения без использования столбца polymorphicable_type для него, учитывая случай, когда я использую UUID.

Я создал демо http://github.com/boriscy/uuidrails3, в котором в качестве ключей используется UUID, вы должны проверить модуль UUIDHelper в lib /, а также все миграции. Нет необходимости добавлять первичный ключ в базу данных, только индекс, потому что первичные ключи проверяют уникальность поля, но нам это не нужно с UUID.

1 Ответ

6 голосов
/ 16 апреля 2010

Поместите этот файл в каталог lib и добавьте его в качестве инициализатора:

class ActiveRecord::Base
  set_primary_key :uuid

  before_create :set_uuid

  def set_uuid
    self.uuid = UUID.generate(:compact)
  end
end

Что касается отношений, Влад прав, что ActiveRecord должен знать, в какой таблице находится запись, чтобы найти ее. Если вам нужна такая функциональность, попробуйте что-нибудь еще, например MongoMapper.

...