2016-07-14 3 views
0

postgres 시퀀스로 생성 된 controller 테이블에 고유 한 필드 number이 있습니다. 마이그레이션은 다음과 같이 보았다 :레일 4는 Factorygirl을 PostgresSequence에 연결합니다.

def self.up 
     execute "CREATE SEQUENCE controller_number_seq START WITH 11000000" 
     execute "ALTER TABLE controller ALTER COLUMN controller_number SET DEFAULT nextval('controller_number_seq');" 
end 

을 지금 Controller의 새로운 인스턴스 수는이 순서에 의해 정의 된 다음 빈 값으로 증가됩니다를 만들 때마다.

나는 어떻게 할 수 있을까? 링크:controller이 포스트그레스 시퀀스에 공장이있다. 나는

(< (10)가 그렇지 않은 경우는 false 번호를 생산하고 또한 단지 N 작동)이

sequence(:phone){|n| "1100000#{n}"} 

같은 FactoyGirl 순서를 만들 수 있지만, 내가 데이터베이스를 사용하기 때문에 내가해야 깨끗한 방법이 보인다 포스트 그레스 시퀀스에 직접 액세스하여 내 :controller 공장에 할당 할 수 있습니다. 그것은 FactoryGirl의 문서에 적혀

답변

0

, 당신은 순서에 대한 초기 값을 설정할 수 있습니다

factory :user do 
    sequence(:email, 1000) { |n| "person#{n}@example.com" } 
end 

귀하의 예를 들어 그것을 만드는 :

당신은 또한 초기 값을 대체 할 수 있습니다 그냥 :

sequence(:phone, 11000000) 

나는 데이터베이스 겐을 사용하는 것이 좋습니다. 이 목적을위한 erator. 하나의 경우 테스트 또는 예제 그룹을 실행 한 후에 값을 다시 설정해야합니다. 또한 일반적으로 성능상의 이유로 데이터베이스에서 분리 된 테스트를 갖는 것이 바람직합니다. 데이터베이스 레벨의 시퀀스에 따라 특별한 의미가 없다면 FactoryGirl 시퀀스가 ​​정상적으로 작동합니다.