Как получить случайное число в FactoryGirl?

Может ли FactoryGirl определить случайное число, скажем, от 0 до 10?

    factory :rating do
       ranking 1 #random number?
       recipe
    end

Мне бы очень хотелось, чтобы сгенерированный рейтинг был случайным значением от 0 до 10.

Я хочу создавать рейтинги с разными номерами, но не хочу явно определять их в rspec. Это будет использоваться для отображения средней и другой статистики из рейтинговых чисел. Пример: сколько 10, сколько 0, среднее и т. Д.

12 голосов | спросил ChrisBarthol 2 +04002013-10-02T20:22:27+04:00312013bEurope/MoscowWed, 02 Oct 2013 20:22:27 +0400 2013, 20:22:27

2 ответа


0

Что-то подобное возможно?

FactoryGirl.define do
  sequence(:random_ranking) do |n|
    @random_rankings ||= (1..10).to_a.shuffle
    @random_rankings[n]
  end

  factory :user do
    id { FactoryGirl.generate(:random_ranking) }
  end
end

Ссылка здесь

ответил Okuma.Scott 2 +04002013-10-02T20:30:10+04:00312013bEurope/MoscowWed, 02 Oct 2013 20:30:10 +0400 2013, 20:30:10
0

Начиная с версии 4.4, у меня работает следующее ...

factory :rating do
   ranking {rand(1..10)}
   recipe
end

И для немного другого использования рандомизации:

FactoryGirl.define do
  factory :plan do
    name {["Free", "Standard", "Enterprise"].sample}
    price {Faker::numerify('$##')}
  end
end

Создав несколько экземпляров, вы можете увидеть рандомизацию имени и рандомизацию цены:

2.0.0-p247 :010 > 4.times.each {FactoryGirl.create(:plan)}
2.0.0-p247 :011 > ap Plan.to_list
[
    [0] [
        [0] "Free: $48",
        [1] BSON::ObjectId('549f6da466e76c8f5300000e')
    ],
    [1] [
        [0] "Standard: $69",
        [1] BSON::ObjectId('549f6da466e76c8f5300000f')
    ],
    [2] [
        [0] "Enterprise: $52",
        [1] BSON::ObjectId('549f6da466e76c8f53000010')
    ],
    [3] [
        [0] "Free: $84",
        [1] BSON::ObjectId('549f6da466e76c8f53000011')
    ]
]
ответил Jon Kern 28 SunEurope/Moscow2014-12-28T05:48:37+03:00Europe/Moscow12bEurope/MoscowSun, 28 Dec 2014 05:48:37 +0300 2014, 05:48:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132