Если вам действительно нужна эта информация, вы можете просто определить метод с именем string_id
или что-то, что возвращает числовое значение id
с добавлением пользовательского префикса, который вы определяете?
Сравнение нечисловых первичных ключей (при поиске записей в вашей БД) только замедлит работу вашего приложения, и я не уверен, почему вы захотите сделать это, поскольку вы можете просто сделать .class.name
вызов на модели по вашему выбору, чтобы вернуть имя класса, или первый символ класса, или что-то еще. Я думаю, вам нужно более подробно обосновать и объяснить техническую необходимость для этого в вашем вопросе, в противном случае это просто выглядит как очень плохая идея.
Кроме того, в заголовке вашего вопроса указано «случайный», но где же случайная часть? Что именно вы пытаетесь сделать именно?
В принципе, есть несколько лучших способов сделать это, чем пытаться использовать строку в качестве первичного ключа, по крайней мере, основываясь на том, какую информацию вы уже предоставили в своем вопросе.