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

时间:2013-09-30 11:19:02

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

更新 我正在努力让Factory Girl用我的“发布日期”字段填写一个日期,一个随机日期,坦率地说现在是任何日期,因为我在运行时遇到“验证失败:发布日期不能为空”错误item_pages_spec.rb

在下面的一些帮助之后,他就是我在我的工厂里的东西.rb用于项目页面,但我现在尝试了很多不同的东西。

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

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

发布日期不能为空,因为我的商品模型中有validates :release_date, presence: true。理想情况下,我会在那里进行验证,确保提供的任何日期都是日期,但也接受NIL,因为我不会总是有可用的日期。

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

模型

class Item < ActiveRecord::Base
validates :name, presence: true, length: { maximum: 50 }
validates :release_date, presence: true

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

2 个答案:

答案 0 :(得分:6)

Faker gem有一个非常好的方法:

Faker::Date.between(2.days.ago, Date.today) 

答案 1 :(得分:4)

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

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