如何让工厂女孩创建约会?

Oss*_*sie 8 rspec ruby-on-rails ruby-on-rails-4 factory-bot

更新 我试图让Factory Girl用日期,随机日期填写我的"发布日期"字段,坦率地说现在是任何日期,因为当我运行时我不断收到"验证失败:发布日期不能为空"错误我的item_pages_spec.rb

在下面的一些帮助之后,他就是我在我的factory.rb中的项目页面,但我现在尝试了很多不同的东西.

  factory :item do
    sequence(:name)  { |n| "Item #{n}" }
    release_date { rand(1..100).days.from_now }
  end
Run Code Online (Sandbox Code Playgroud)

理想情况下,它会为每个工厂制作的项目实例创建不同的随机日期.

发布日期不能为空,因为validates :release_date, presence: true我的项目模型中有.理想情况下,我有一个验证,确保提供的任何日期是一个日期,但也接受NIL,因为我不会总是有可用的日期.

任何帮助非常感谢.我在网上找不到关于工厂女孩和约会的具体信息.

模型

class Item < ActiveRecord::Base
validates :name, presence: true, length: { maximum: 50 }
validates :release_date, presence: true
Run Code Online (Sandbox Code Playgroud)

结束

Item_pages_spec.rb

    require 'spec_helper'

describe "Item pages" do

  subject { page }

 describe "Item page" do
   let(:item) { FactoryGirl.create(:item) }
   before { visit item_path(item) }

   it { should have_content(item.name) }
   it { should have_title(item.name) }
 end
end
Run Code Online (Sandbox Code Playgroud)

小智 7

法克尔宝石有这是一个非常不错的方法:

Faker::Date.between(2.days.ago, Date.today) 
Run Code Online (Sandbox Code Playgroud)


apn*_*ing 4

这将设置从现在到 2 年后的日期,如果需要调整参数(或提取方法):

factory :item do
  sequence(:name)  { |n| "Item #{n}" }
  release_date do
    from = Time.now.to_f
    to   = 2.years.from_now.to_f
    Time.at(from + rand * (to - from))
  end
end
Run Code Online (Sandbox Code Playgroud)