0
Rails數據庫表通常有時間戳記(created_at
和updated_at
),並且從第4列開始,所有時間戳列都有NOT NULL
約束條件。因此,所有工廠必須爲所述時間戳指定值。我怎樣才能指定一個屬於所有工廠的屬性,而不必重複自己?如何指定所有工廠通用的屬性?
在issue 564中討論了類似的東西。
我可以用instance_eval這樣的:
module SharedFactoryBits
def self.timestamps
Proc.new {
created_at { Time.zone.now }
updated_at { Time.zone.now }
}
end
end
# spec/factories/banana_factory.rb
FactoryGirl.define do
factory :banana do
instance_eval &SharedFactoryBits.timestamps
end
end
# spec/factories/kiwi_factory.rb
FactoryGirl.define do
factory :kiwi do
instance_eval &SharedFactoryBits.timestamps
end
end
,但它不是很清晰。
我使用:
gem 'factory_girl_rails', '~> 4.2.1'
謝謝。是的,我只關心時間戳,看起來我在工廠裏並不需要它們。我有一個失敗的測試告訴我,'created_at'列的'not null'約束被違反了,我認爲這是工廠的錯,但那是一條紅鯡魚。 –