我在lib/tasks/sample_data.rake
文件中使用以下代码生成虚假数据以填充开发数据库。
namespace :db do
desc "Fill database with sample data"
task populate: :environment do
Faker::Config.locale = :en
99.times do |n|
title = Faker::Lorem.words(2..10)
body = Faker::Lorem.paragraphs(2..8)
Topic.create!(title: title,
body: body)
end
end
end
问题是标题的生成文本在index
页面
--- - doloribus - numquam - placeat - delectus - et - vero
--- - nostrum - numquam - laudantium - voluptas - est - laborum
--- - perferendis - nemo - facilis - quis - eos - quia - sint
生成的输出中有不必要的hipns,这也发生在生成的段落中。如下图所示。
--- - Fuga explicabo et ea. Excepturi earum ut consequatur minima iure.
Molestias id tempora alias quisquam animi earum. Eius libero minima ut.
Repudiandae eum commodi. - Iure aliquam at maxime. Rerum ea non corrupti
asperiores est. Debitis suscipit nihil quod ut eaque sint repellat.
quae doloremque. - Voluptatem facere deleniti nisi libero. Molestiae
magni dolores repudiandae in corporis. Ut enim illum optio et architecto.
如何防止添加不必要的连字符的这种行为,并使用faker gem创建干净的英语语句和段落。
感谢。
答案 0 :(得分:9)
我不认为Faker方法接受范围作为参数。在doc中它只接受数字。因此,我甚至无法通过复制代码在控制台中重现您的问题。
也许你想生成随机长度的单词或段落?您可以使用rand
生成它。像这样:
title = Faker::Lorem.words(rand(2..10))
body = Faker::Lorem.paragraphs(rand(2..8))
Faker将创建 HASH 而不是纯字符串。
因此,对于您的标题,您最好使用sentence
代替words
,然后选择最后.
title = Faker::Lorem.sentence(rand(2..10)).chomp('.')
# or
title = Faker::Lorem.words(rand(2..10)).join(' ')
对于正文,请使用\n
或任何您喜欢的内容加入段落
body = Faker::Lorem.paragraphs(rand(2..8)).join('\n')
答案 1 :(得分:5)
这解决了关于获取随机英语单词的第二个问题。
有一些Faker类确实用英语生成随机单词。
{{1}将产生一些幽默的结果,例如:Faker::Commerce.product_name
还会生成随机的英文流行语,如: