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 に答える