8

更新 我试图让 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

理想情况下,它将是一条为每个工厂制造的项目实例创建不同随机日期的行。

发布日期不能为空,因为我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
4

2 回答 2

7

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

Faker::Date.between(2.days.ago, Date.today) 
于 2015-01-16T10:03:49.213 回答
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
于 2013-09-30T11:25:31.500 回答