如何使用假冒宝石生成假冒食物名称?

时间:2019-01-24 18:57:34

标签: ruby-on-rails ruby faker

我已经阅读了一些教程,但是我仍然不确定如何做我想做的事情,因此,如果听起来很抱歉,我感到抱歉。我有一个称为“ Sandwitches”的活动记录,该记录具有以下属性:名称价格可用性。当我想为其生成伪造数据时,我不太确定如何实现这样的目标,因为 name 属性 faker 可以生成人名的代表。例如,我想为“三明治”(Sandwitches)生成名称,例如“ Club Sandwitch”或“ Pesto with Feta Cheese”。反正还有 faker gem 来做到这一点吗?还是基本上可以使用其他任何宝石来实现这一目标?

感谢您能提供的任何帮助!

4 个答案:

答案 0 :(得分:4)

如果您在此处查看伪造的宝石:https://github.com/stympy/faker/blob/master/lib/faker/default/food.rb(请注意,我与伪造者的发展无关),您可以看到其中有一个食物模块。所以试试这个:

>> Faker::Food.dish
=> "Tiramisù"
>> Faker::Food.dish
=> "Mushroom Risotto"
>> Faker::Food.vegetables
=> "Radish"

我还看到了一个甜点模块以及其他一些看起来很有趣的模块。在github的目录结构中上一两棵树以查看其他选项。法克做很多事情!

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

另一个编辑:我看不到三明治的具体选项。但是也许因为这是伪造数据,所以您可以只使用盘选项。

我发誓的最终编辑:您可以使用以下类似的方法“伪造”三明治:

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"

答案 1 :(得分:4)

除了@nzifnab answer,您还可以简化规格并组织自己的自定义假货(基于@nzifnab代码)

spec / support / faker / sandwich.rb

module Faker
  class Sandwich
    class << self
      def title
        "#{ingredients.to_sentence} on #{breads.sample(1).first}"
      end

      def breads
        ["Brioche", "Rye", "Whole Wheat"] # Add more breads here, https://en.wikipedia.org/wiki/List_of_breads can help
      end

      def ingredients
        (1..(rand(3)+1)).map{rand > 0.5 ? Faker::Food.ingredient : Faker::Food.vegetables}
      end
    end
  end
end

spec / models / sandwiches_spec.rb

describe 'Sandwiches' do
  it 'contains name' do
    # some checks...
    expect(Faker::Sandwich.title).not_to be_empty
  end
end

答案 2 :(得分:1)

型号名称=项目。

db列名称=(名称,价格,类别ID,图像ID,简短描述,长描述,有效,准备时间,卡路里计数,进餐类型ID,烹饪ID,辣味水平,新的,畅销书)

在/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

答案 3 :(得分:0)

您可以访问下面的链接,以获取faker gem的文档。   https://github.com/stympy/faker

例如,

5.times.do
 name = Faker::Name.first_name
 price = Faker::Name.price
end