генерация случайного первичного идентификатора в рельсах 3 - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть разные модели, такие как Клиент, Пользователь, Администратор и т. Д. В моем приложении rails.Я хотел бы сделать основной идентификатор в виде строки и добавить его перед символом.таким образом, для клиентов, идентификатор будет что-то вроде C1, C2, C3.Для пользователей это будет U1, U2, U3 и т.д ..

Ответы [ 3 ]

2 голосов
/ 15 декабря 2011

Если у вас нет действительно, очень, очень веской причины для этого, просто не делайте этого.Генерация ваших собственных ключей кажется хорошей идеей, пока она не вызовет сбои.

Вместо этого создайте вспомогательный ключ с уникальным индексом и используйте его для этой цели.

2 голосов
/ 15 декабря 2011

Если вам действительно нужна эта информация, вы можете просто определить метод с именем string_id или что-то, что возвращает числовое значение id с добавлением пользовательского префикса, который вы определяете?

Сравнение нечисловых первичных ключей (при поиске записей в вашей БД) только замедлит работу вашего приложения, и я не уверен, почему вы захотите сделать это, поскольку вы можете просто сделать .class.name вызов на модели по вашему выбору, чтобы вернуть имя класса, или первый символ класса, или что-то еще. Я думаю, вам нужно более подробно обосновать и объяснить техническую необходимость для этого в вашем вопросе, в противном случае это просто выглядит как очень плохая идея.

Кроме того, в заголовке вашего вопроса указано «случайный», но где же случайная часть? Что именно вы пытаетесь сделать именно?

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

0 голосов
/ 26 мая 2014

Вы можете объявить альтернативный столбец идентификатора или определить свой собственный ключ.

например:

class Customer < ActiveRecord::Base
  self.primary_key = "C_"+ #your column 
end

см. http://api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/PrimaryKey/ClassMethods.html#method-i-primary_key-3D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...