Ruby on rails 在rails中创建对象时生成UUID
我想在创建新对象时生成一个唯一的ID 我有一个型号叫Product,它有名字、重量和价格。我想创建一个以“TPK”+随机8个字符开头的唯一Id,并将其添加到products表中。实现它的简单方法是什么 这是当前的迁移文件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
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是的,你说得对。我把重点放在了方法上,而忽略了实现,这需要考虑更多的细节,比如独特性。