Я пишу приложение rails, которое по своей природе НЕ МОЖЕТЕ требовать от пользователей регистрации, и поэтому не может использовать аутентификацию в качестве обычного средства защиты записей. (Я знаю, я знаю...) Информация пользователя здесь ограничена адресами электронной почты. Поэтому мне нужен способ сделать мои идентификаторы модели непредсказуемыми, чтобы другие идентификаторы не могли быть легко угаданы. (Я знаю, я знаю...)
Я пробовал использовать плагины, такие как uuidtools, для рандомизации идентификаторов, поскольку записи создаются так:
require 'uuidtools'
class Post < ActiveRecord::Base
def before_create()
self.id = OpenSSL::Digest.SHA1.hexdigest(UUID.timestamp_create())
end
end
... Сначала это выглядит хорошо, но забавные вещи случаются. ActiveRecord иногда пытается вставить значение 0 в id, и я получаю такие ошибки, как "не удается найти сообщение с id = 0" и т.д.
У меня закончились идеи. Может ли кто-нибудь помочь? Спасибо.