Ruby on rails 如何使用faker gem生成假食品名称?

Ruby on rails 如何使用faker gem生成假食品名称?,ruby-on-rails,ruby,faker,Ruby On Rails,Ruby,Faker,我已经阅读了好几篇教程,但我仍然不确定如何做我想做的事情,因此如果听起来像垃圾,我很抱歉。我有一个名为“Sandwitches”的活动记录,它具有以下属性:名称、价格和可用性。由于我想为它生成假数据,我不太确定如何实现这样的效果,因为name属性faker可以生成人名的代表。例如,我想为沙巫婆命名,比如“沙巫婆俱乐部”或“加羊奶奶酪的香蒜酱”。有没有什么办法可以用假宝石来做?或者基本上我可以使用任何其他宝石来实现这一点 我很感激你能提供的任何帮助 如果你看一下这里的假货宝石:(注意,我不是假货开

我已经阅读了好几篇教程,但我仍然不确定如何做我想做的事情,因此如果听起来像垃圾,我很抱歉。我有一个名为“Sandwitches”的活动记录,它具有以下属性:名称、价格和可用性。由于我想为它生成假数据,我不太确定如何实现这样的效果,因为name属性faker可以生成人名的代表。例如,我想为沙巫婆命名,比如“沙巫婆俱乐部”或“加羊奶奶酪的香蒜酱”。有没有什么办法可以用假宝石来做?或者基本上我可以使用任何其他宝石来实现这一点


我很感激你能提供的任何帮助

如果你看一下这里的假货宝石:(注意,我不是假货开发部的下属)你可以看到有一个食品模块。所以试试这个:

>> Faker::Food.dish
=> "Tiramisù"
>> Faker::Food.dish
=> "Mushroom Risotto"
>> Faker::Food.vegetables
=> "Radish"
我还看到了一个甜点模块和其他一些看起来很有趣的模块。在github的目录结构中向上看一两棵树,以查看其他选项。骗子做了很多事

编辑:另外,您的AR表应该是“三明治”,而不是“三明治”;)他们不是有沙权的女巫,他们是食物和面包;p

另一个编辑:我没有看到专门用于三明治的选项。但也许因为这是为了伪造数据,你可以使用dish选项

最终编辑我发誓:你可以用以下东西“伪造”三明治:

breads = ["Brioche", "Rye", "Whole Wheat"] # Add more breads here, https://en.wikipedia.org/wiki/List_of_breads can help
ingredients = (1..(rand(3)+1)).map{rand > 0.5 ? Faker::Food.ingredient : Faker::Food.vegetables}
sandwich = "#{ingredients.to_sentence} on #{breads.sample(1).first}"
它可以返回如下结果:

=> "Buckwheat Flour on Rye"
=> "Broccoli and Jicama on Whole Wheat"
=> "Peppers on Rye"
=> "Chia Seeds on Rye"
=> "Pecan Nut and Anchovies on Brioche"
=> "Arugula on Rye"
除此之外,您还可以烘干您的规格并组织您自己的定制假货(基于代码)

规格/支架/赝品/三明治.rb


您可以访问下面的链接以获取
faker
gem的文档。

比如说,

5.times.do
 name = Faker::Name.first_name
 price = Faker::Name.price
end
型号名称=项目

db列名称=(名称、价格、类别id、图像id、短描述、长描述、是否活跃、准备时间、卡路里计数、膳食类型id、烹饪id、辣味等级、是否新鲜、是否畅销)

in/seed.rb

100.times do 
    Item.create([{
        name:Faker::Food.dish,
        price:Faker::Number.positive(5, 30),
        category_id:Faker::Number.positive(1, 10),
        image_id:Faker::Number.positive(1, 20),
        short_description:Faker::Lorem.words(rand(2..5)).join(' '),
        long_description:Faker::Lorem.words(rand(2..10)).join(' '),
        is_active:Faker::Boolean.boolean,
        preparation_time:Faker::Number.positive(10, 90),
        serves:Faker::Number.between(1, 3),
        calorie_count:Faker::Number.between(20, 500),
        meal_type_id:Faker::Number.positive(1, 4),
        cuisine_id:Faker::Number.positive(1, 10),
        spicy_level:Faker::Number.between(1, 3),
        is_new:Faker::Boolean.boolean,
        is_bestseller:Faker::Boolean.boolean
    }])
end
然后在终点站

rake db:seed
我认为这是期望(…)。不是,不是不是?除非两者都起作用?我总是在rspec中使用
not_to
100.times do 
    Item.create([{
        name:Faker::Food.dish,
        price:Faker::Number.positive(5, 30),
        category_id:Faker::Number.positive(1, 10),
        image_id:Faker::Number.positive(1, 20),
        short_description:Faker::Lorem.words(rand(2..5)).join(' '),
        long_description:Faker::Lorem.words(rand(2..10)).join(' '),
        is_active:Faker::Boolean.boolean,
        preparation_time:Faker::Number.positive(10, 90),
        serves:Faker::Number.between(1, 3),
        calorie_count:Faker::Number.between(20, 500),
        meal_type_id:Faker::Number.positive(1, 4),
        cuisine_id:Faker::Number.positive(1, 10),
        spicy_level:Faker::Number.between(1, 3),
        is_new:Faker::Boolean.boolean,
        is_bestseller:Faker::Boolean.boolean
    }])
end
rake db:seed