генерировать UUID при создании объекта в рельсах - PullRequest
0 голосов
/ 21 июня 2019

Я хочу сгенерировать уникальный идентификатор, когда создается новый объект

У меня есть модель с именем Product, которая имеет имя, вес и цену.Я хочу создать уникальный идентификатор, который начинается с «TPK» + случайные 8 символов, и добавить его в таблицу продуктов.Каков простой способ добиться этого?

Вот текущий файл миграции

class Products < ActiveRecord::Migration[5.2]
 def change
  create_table :products do |t|
  t.string :weight
  t.string :product_name
  t.integer :price
  .......

Я хочу добавить к нему еще один атрибут с именем product_code, и я хочу, чтобы он имел уникальный идентификаторпри создании начиная с "TPK" + random 8 символов

1 Ответ

1 голос
/ 26 июня 2019

Я бы рекомендовал использовать миграцию только для обновления схемы и сохранения логики модели внутри модели.Итак, сначала вы создаете миграцию для добавления product_code в таблицу продуктов.Затем добавьте хук в модель продукта, чтобы создать код по умолчанию:

class Product < ApplicationRecord
  before_create :default_product_code

  private
  def default_product_code
    #your implementation
    #e.g. self.product_code = 'TPK' + SecureRandom.hex(4)
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...