2014-03-25 3 views
-1

이미 같은 이름의 요소가 있는지 테스트 할 수 있습니까?이름이 이미 사용되었는지 테스트하십시오.

의 내가 같은 배열을 가정 해 봅시다 : 이미 "유럽 연합 (EU)"라는 요소가있는 경우, 다음 lregion=["de", "eu", "us", "it"]

나는이 스크립트 내 표에 넣고 싶어하고, 만들 수 없습니다한다 다시.

lregion.each do |x| 
     if  #this "actually" should test, if there is already a country with this countrycode 
     Country.create(countrycode: x)            #creates Country 
     end 
    end 

는 seeds.rb 충돌을 만들 것 때문에, 내 씨앗 파일에이 스크립트를 사용하고, 단지 내 모델에서 uniqueness: true을 사용할 수 없기 때문에 그것은, 이런 식으로 그것을하는 것이 중요합니다.

누구든지 내 문제에 대한 아이디어가 있습니까?

+1

고유성의 유효성을 검사하고 오류를 구조하거나 first_or_create를 사용하십시오 –

답변

3

당신이 사용하려는 find_or_create :

<% lregion.each do |x| %> 
    <% Country.find_or_create_by(countrycode: x.country_code) %> 
<% end %> 

country_code가 이미 등록되어있는 경우는, 검색합니다 그렇지 않은 경우, 다음이 새로 만들어집니다.

+0

매우 유용합니다! 감사! 그러나 나는 유일성의 타당성 검증과 함께 작동한다는 것을 깨달았다. 하지만 너는 매우 도움이된다! 나는 많은 관계를 자동적으로 생성하기 위해 이것을 필요로한다. 고맙습니다! – user3383458

+0

도움이 되니 기뻤습니다 :) 고유성 검증과 함께 작동한다고 생각했지만, 다른 것을 엉망으로 만들 것이라고 언급했습니다. :) –

0

내 이전 문

내 씨앗 파일에이 스크립트를 사용하고, 그냥 고유성 사용할 수 있기 때문에, 이런 식으로 작업을 수행하는 것이 중요합니다 : 내 모델에서 사실이 확인 때문에, seeds.rb 충돌.

잘못되었습니다. 나는 이것을 쉽게 사용할 수 있었다!

관련 문제