Я пытаюсь использовать рельсы Faker gem для создания уникальных имен продуктов для создания образцов моделей товаров в базе данных. Я использовал Faker несколько раз, но по какой-то причине я не могу создавать новые названия продуктов. Я создал функцию nameMaker, чтобы избежать возможных ранних повторов, но я получаю недействительность записи сразу после одной вставки. Кто-нибудь знает, как я могу это исправить?Rails faker gem производит то же название продукта
seed.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
item.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
Это не делает ничего, я заменил 'уникальность: истина' в строке': name', с которой вы сказали, я отредактировал 'item.rb', чтобы показать все проверки – user2361174