更新 我正在努力让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
答案 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