我正在尝试使用 rails Faker gem 生成唯一的产品名称,以便在数据库中制作示例项目模型。我已经多次使用 Faker,但由于某种原因,我无法生成新的产品名称。我制作了 nameMaker 函数以避免可能的早期重复,但是在插入后我得到了一个记录失效。有谁知道我该如何解决这个问题?
种子.rb:
98.times do |n|
name = Item.nameMaker
description = Faker::Lorem.sentence(1)
price = Item.priceMaker
item = Item.create!(
name: name,
description: description,
price: price)
end
项目.rb:
class Item < ActiveRecord::Base
validates :name, presence: true, length: { maximum: 100 }
validates :description, presence: true,
length: { maximum: 1000 }
VALID_PRICE_REGEX = /\A\d+(?:\.\d{0,3})?\z/
validates :price, presence: true,
:format => { with: VALID_PRICE_REGEX },
:numericality => {:greater_than => 0}
validates_uniqueness_of :name
def Item.nameMaker
loop do
name = Item.newName
break if Item.find_by(name: name).nil?
end
return name
end
def Item.newName
Faker::Commerce.product_name
end
end