FactoryGirl:生成开始和结束日期的序列

时间:2014-01-15 08:56:19

标签: ruby-on-rails ruby rspec tdd factory-bot

我正在尝试为start_dateend_date定义一个序列,以便end_date应该比start_date提前n天。

sequence(:start_date)  { |n| Date.current.beginning_of_year.since(n.days) }
sequence(:end_date)    { |n| generate(:start_date).since(n.days) }

但是这会导致undefined_method错误,因为生成应该在工厂块中调用

NoMethodError: undefined method `generate' for #<FactoryGirl::Syntax::Default::DSL:0xe5351fc>

我也可以将end_date排序为

sequence(:end_date)    { |n| Date.current.beginning_of_year.ago(n.days) }

但这可能会导致我的end_date落后于start_date,这是不期望的。

有没有更好的方法来定义所需的开始和结束日期序列?

2 个答案:

答案 0 :(得分:2)

要获得随机天数:

:start_date DateTime.now  
:end_date (rand(n)+1).from_now  

如果n是间隔,即如果您想要1到60之间的天数,您将会这样做:

(rand(60)+1).from_now 

答案 1 :(得分:0)

这项工作对我来说:

    start_date Faker::Date.between(5.days.from_now, 55.days.from_now)
    end_date Faker::Date.between(57.days.from_now, 75.days.from_now)