Ruby on rails 在rails中创建对象时生成UUID

Ruby on rails 在rails中创建对象时生成UUID,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我想在创建新对象时生成一个唯一的ID 我有一个型号叫Product,它有名字、重量和价格。我想创建一个以“TPK”+随机8个字符开头的唯一Id,并将其添加到products表中。实现它的简单方法是什么 这是当前的迁移文件 class Products < ActiveRecord::Migration[5.2] def change create_table :products do |t| t.string :weight t.string :product_name

我想在创建新对象时生成一个唯一的ID

我有一个型号叫Product,它有名字、重量和价格。我想创建一个以“TPK”+随机8个字符开头的唯一Id,并将其添加到products表中。实现它的简单方法是什么

这是当前的迁移文件

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

我想给它添加另一个名为
product\u code
的属性,我希望它在创建时有一个唯一的Id,从
“TPK”+随机8个字符开始

我建议只使用迁移来更新模式,并将模型逻辑保留在模型内。首先,创建一个迁移,将
product\u code
添加到products表中。然后在产品模型中添加挂钩以创建默认代码:

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
类产品
您还应该在分配新生成的代码之前检查它是否唯一(并在该列上具有唯一索引)。但这个答案是正确的spirit@CodyCaughlan是的,你说得对。我把重点放在了方法上,而忽略了实现,这需要考虑更多的细节,比如独特性。