我要在创建新对象时生成唯一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
答案 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