вы используете activerecord для моделирования файлов или они просто плоские файлы где-то?
если у вас есть модель типа UploadedFile
irb(main):021:0> file_id = 1
=> 1
irb(main):022:0> Digest::SHA1.hexdigest('SomeRandomString' + file_id.to_s)
=> "70f5eedc8d4f02fd8f5d4e09ca8925c2f8d6b942"
если вы просто храните их как простые файлы в системе, вы можете хэшировать их путь + имя файла, чтобы создать уникальную строку.
irb(main):016:0> Digest::SHA1.hexdigest '/home/bob/somefile.mp4'
=> "204a038eddff90637c529af7003e77d600428271"
и вы всегда можете добавить временную метку текущего времени и случайное число, чтобы избежать дублирования.