【发布时间】:2017-07-07 07:05:40
【问题描述】:
我正在尝试使用 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
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
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 random-sample faker