seeds.rb 대신 YAML 파일을 사용하여 데이터베이스에 초기 데이터를로드하는 방법은 무엇입니까?Ruby on Rails : YAML 파일의 시드 데이터로드
답변
체크 아웃기구에 레일 가이드에 루비 :
http://guides.rubyonrails.org/testing.html#the-low-down-on-fixtures
일반적으로, 당신은 test/
디렉토리에 YAML 픽스처 파일을 만든 다음 rake db:fixtures:load
명령을 사용하여 데이터베이스에로드 할 수 있습니다. 당신이 설비로 할 수있는 모든 멋진 일들에 대한 문서가 여기에 있습니다 :
seed_file = Rails.root.join('db', 'seeds', 'categories.yml')
config = YAML::load_file(seed_file)
Category.create!(config)
그런 다음, 단순히 YAML 장소 :
이예는 YAML 파일을 구문 분석 db/seeds.rb
에 코드를 추가 foo in db/seeds/categories.yml
. YAML 파일은 연관 배열 목록이어야합니다 (예 :
- name: accessory
shortcode: A
- name: laptop
shortcode: L
- name: server
shortcode: S
이 솔루션의 문제점은'rake db : seed'를 두 번째로 실행하면 시간, 당신은 중복의 무리를 얻을거야. 유일성에 대한 요구 사항에 따라 아마도 마지막 줄을 다음과 같이 수정해야 할 것입니다 :'config.each {| values | Category.first_or_create (values)}' – sberkley
어떤 상황에서 데이터베이스를 두 번 시드 하시겠습니까? 'rake db : reset'은 99 %의 시간을 필요로하는 모든 것을합니다. – Zaz
새 시드 값을 테이블에 추가하거나 시드 값이있는 새 테이블을 추가하는 경우. 전체 데이터베이스를 삭제하는 것은 개발 환경의 솔루션 일 수 있지만 확실히 프로덕션 환경에서는 아닙니다. 다른 테이블에 해당 테이블의 ID에 대한 참조가있는 경우 다시 시드하기 전에 시드 된 테이블을 삭제하는 것도 옵션이 아닙니다. 이전에 시드 된 값을 제거해야하는 경우 상황은 더욱 복잡해지고'rake db : seed' 이상의 해결책이 필요할 수 있습니다. – sberkley
@Zaz가 답변을 사용했습니다. 그것은 아주 잘 작동합니다.
하지만 시드 데이터에 문제가있는 경우 (예 : 매우 큰 시드 yaml 파일), yaml의 어느 부분이 잘못되었는지 알고 싶습니다. 그 때 당신은 창조 한 후에 구획을 추가 할 수있다! 이 같은 디버그 :
seed_file = Rails.root.join('db', 'seeds', 'categories.yml')
config = YAML::load_file(seed_file)
counter = 0
Category.create!(config) do |c|
puts "Create category #{counter += 1} with name: #{c.name}"
end
- 1. Ruby on Rails : 가입시 사용자를위한 시드 데이터?
- 2. ruby-on-rails : 시드 데이터 전략 (또는 개발자 데이터베이스에 테스트 데이터로드)
- 3. YAML 파일의 레일즈 구문 오류?
- 4. Ruby on Rails 블로그
- 5. 정규식 + Ruby On Rails
- 6. Ruby On Rails 마이그레이션
- 7. Ruby on Rails 쿼리
- 8. Ruby on Rails + Devise
- 9. Mootools + Ruby on Rails ==?
- 10. Ruby on Rails 관계
- 11. ruby on rails + iis7
- 12. IIS7의 Ruby on Rails
- 13. Ruby On Rails Application.html.haml
- 14. Ruby on Rails 그래프
- 15. Ruby on Rails 튜토리얼
- 16. Ruby on Rails + Ajax
- 17. Ruby on Rails - 로그인
- 18. Ruby on Rails : Model
- 19. Ruby on Rails 스위치
- 20. Ruby on Rails 국제화
- 21. ruby on rails redirect_to
- 22. Ruby on Rails & Javascript
- 23. Ruby on Rails Listener
- 24. Ruby on Rails 및 CruiseControl.rb
- 25. Ruby/Slim : YAML 파일의 Markdown을 구문 분석합니다.
- 26. Ruby on Rails : 씨앗에 대한 'validate_on_create'문을 건너 뛰는 중
- 27. Ruby on Rails 고객 지향형 formbuilder?
- 28. Ruby on Rails 3와의 프롤로그
- 29. ruby on rails ajax update css on
- 30. Ruby On Rails on Ubuntu + apache2 + Passenger
허용 대답은 크지 않다으로 보면 ('테스트 /'디렉토리에 씨앗 데이터를 넣습니다), 그리고 [내 대답 (http://stackoverflow.com/a/24957205/405550) 훨씬 더 upvotes있다, 제발 내 받아 들일 것을 고려하시기 바랍니다? – Zaz