FactoryGirl с локальными переменными - PullRequest
1 голос
/ 15 ноября 2011

Я пытаюсь создать временной интервал в какое-то случайное время в будущем:

FactoryGirl.define do
  factory :time_slot do
    week_num = (rand(10) +1)
    day_num = (1+rand(30))
    hour_num = (1+rand(12))
    future_date = week_num.weeks.from_now
    my_time = Date.local(future_date.year,future_date.month,day_num, hour_num)
    sold_out false
    fitness_camp
    start_time {my_time}
    end_time {my_time + 8.weeks}

Но это приводит к undefined method + for #<FactoryGirl::Declaration::Static

Я знаю, что это будет работать в одну огромную строку, но должен быть чистый способ сделать это. Смешивать локальные переменные с атрибутами сложно, поэтому лучше поместить эту функцию в другое место и сгенерировать Factory, переопределив дату по умолчанию?

Спасибо

тим

1 Ответ

3 голосов
/ 05 марта 2012

Используйте Random.rand() вместо rand()

 FactoryGirl.define do
   factory :time_slot do
     week_num = (Random.rand(10) +1)
     day_num = (1+Random.rand(30))
     hour_num = (1+Random.rand(12))
     future_date = week_num.weeks.from_now
     my_time = Date.local(future_date.year,future_date.month,day_num, hour_num)
     sold_out false
     fitness_camp
     start_time {my_time}
     end_time {my_time + 8.weeks}
...