Как в Rails генерировать уникальный серийный номер для нового экземпляра модели? - PullRequest
3 голосов
/ 06 апреля 2011

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

Есть идеи?

Спасибо за внимание!

1 Ответ

13 голосов
/ 06 апреля 2011

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

class Product
  def serial_number
    "PLN-%.6d" % id
  end
end

Так, например, если у вас есть продукт с id = 567, у вас будет такой серийный номер:

Product.find(567).serial_number
=> PLN-000567
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...