레일 데이터베이스 테이블에는 일반적으로 타임 스탬프 (created_at
및 updated_at
)가 있으며, 레일 4의 모든 타임 스탬프 열은 NOT NULL
개의 제약 조건을 갖습니다. 따라서 모든 공장에서는 상기 타임 스탬프에 대한 값을 지정해야합니다. 자신을 반복하지 않고 모든 공장에 공통된 속성을 어떻게 지정할 수 있습니까?모든 팩토리에 공통된 속성을 지정하는 방법은 무엇입니까?
유사한 내용이 issue 564에서 논의되었습니다.
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
을하지만 아주 읽기 쉬운 아니다 :
이 같은 instance_eval을 사용할 수 있습니다.
내가 사용하고 있습니다 : 당신은 타임 스탬프를 지정해야합니다 확인
gem 'factory_girl_rails', '~> 4.2.1'
감사합니다. 예, 타임 스탬프에만 관심이 있었고 제 공장에서 필요하지 않은 것 같습니다. 나는'created_at' 칼럼의'not null' 제약이 위반되었다는 것을 알려주는 실패한 테스트를 가지고 있었고, 나는 그것이 공장의 잘못이라고 생각했지만 빨간 청어였습니다. –