Как использовать поддельный драгоценный камень для создания поддельных названий продуктов питания?

Я прочитал несколько руководств, но я все еще не уверен, как делать то, что я хочу, поэтому мне жаль, если это звучит глупо. У меня есть активная запись под названием «Бутерброды», атрибуты которой: имя, цена и доступность. Поскольку я хочу сгенерировать для него поддельные данные, я не совсем уверен, как мне добиться чего-то подобного, потому что атрибут name faker может генерировать обозначения для имен людей. Например, я хотел бы сгенерировать имена для сэндвичей, например «Клубный сэндвич» или «Песто с сыром фета». Можно ли как-то сделать это с помощью faker gem? Или в основном я мог бы использовать любой другой драгоценный камень для достижения этого?

Я ценю любую помощь, которую вы можете предоставить!


person ffblord    schedule 24.01.2019    source источник


Ответы (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, чтобы увидеть другие варианты. Faker делает много вещей!

Редактировать: Кроме того, ваш стол AR должен быть «Бутерброды», а не «Бутерброды»;) Они не ведьмы с силой песка, они еда с хлебом; 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"
person nzifnab    schedule 24.01.2019

В дополнение к @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
person vovan    schedule 25.01.2019
comment
Я думаю, это expect(...).not_to, а не to_not? Разве оба работают? Я всегда использовал not_to в rspec. - person nzifnab; 25.01.2019

название модели = Арт.

имя столбца db = (имя, цена, идентификатор_категории, идентификатор_изображения, короткое_описание, длинное_описание, является_активным, время_подготовки, количество калорий, идентификатор_типа_блюда, идентификатор_кухни, уровень_острости, новый, является_бестселлером)

в /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
person adarsh    schedule 25.01.2019

Вы можете перейти по ссылке ниже для документации по faker драгоценному камню. https://github.com/stympy/faker

Например,

5.times.do
 name = Faker::Name.first_name
 price = Faker::Name.price
end
person Foram    schedule 25.01.2019