Таблицы базы данных 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'
Спасибо. Да, меня беспокоили только временные метки, и похоже, что я не нуждаюсь в них на своих заводах. У меня был неудачный тест, в котором говорилось, что ограничение «не null» столбца «created_at» было нарушено, и я подумал, что это вина фабрики, но это была красная селедка. –