在Rails中创建对象时生成UUID

时间:2019-06-20 23:21:51

标签: ruby-on-rails ruby-on-rails-5

我要在创建新对象时生成唯一ID

我有一个名为Product的模型,该模型具有名称,重量和价格。我想创建一个以“ TPK” +随机8个字符开头的唯一ID,并将其添加到product表中。有什么简单的方法可以实现它?

这是当前的迁移文件

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个字符开头的唯一ID

1 个答案:

答案 0 :(得分:1)

我建议仅使用迁移来更新架构并将模型逻辑保留在模型中。因此,首先,创建一个迁移以将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