Как генерируются идентификаторы для приборов? - PullRequest
2 голосов
/ 17 августа 2010

Я использую приборы для хранения всех имеющихся у меня данных испытаний.

Каждая строка в моей БД имеет один и тот же идентификатор для нескольких rake db:fixtures:load с.

Это хорошо, потому что я могу создавать папки в проекте, например, "people / 12345" для хранения дополнительных данных (файлов) для моделей.

Мне интересно знать, как эти сгенерированные идентификаторы поддерживаются постоянными при каждом fixtures:load?

Я полагаю, что рельсы передают метку прибора в хэш-функцию для получения идентификатора, а не для его хранения где-либо.

1 Ответ

3 голосов
/ 17 августа 2010

Вот код, который генерирует идентификаторы:

# Returns a consistent, platform-independent identifier for +label+.
# Identifiers are positive integers less than 2^32.
def self.identify(label)
  Zlib.crc32(label.to_s) % MAX_ID
end

Возможно, вы уже догадались, что label - это метка, используемая в приборе, например: для прибора YAML:

matz:
  first_name: Yukihiro
  last_name: Matsumoto


# ID would be:
1520334085
...