내 레일 앱에서 모든 몽고 이드 모델 이름을 찾는 방법이 있습니까? 나는 모든 파일을 내 app/models 폴더 안에 넣음으로써 모든 모델을 찾을 수 있지만 mongoid 모델 이름을 특별히 원합니다.내 응용 프로그램에서 모든 mongoid 모델 이름을 찾으십시오.
답변
모델 클래스가 이미로드 된 경우 Mongoid :: Document 모듈이 포함 된 모든 클래스를 찾아서 나열 할 수 있습니다.
Object.constants.collect { |sym| Object.const_get(sym) }.
select { |constant| constant.class == Class && constant.include?(Mongoid::Document) }
아니면 그냥 클래스 이름을 원하는 경우 :
Object.constants.collect { |sym| Object.const_get(sym) }.
select { |constant| constant.class == Class && constant.include?(Mongoid::Document) }.
collect { |klass| klass.name }
당신이 이런 식으로 그렇게 할 수있는이 프로그램을 실행하기 전에로드 모델을 강제해야하는 경우 (레일 3) :
Dir["#{Rails.root}/app/models/**/*.rb"].each { |path| require path }
당신은 할 수있다 (당신의 모델의 모든 가정은 app/models
또는 하위 디렉토리에) Mongoid 버전 3.1 이상 : Mongoid.models
모델이 자동으로로드되지 않는 레일즈 개발 모드 인 경우 Rails.application.eager_load!
을 실행하여 전체 애플리케이션을로드하십시오.
모든 몽고 이드 모델을 얻고, 선택적으로 수퍼 클래스로 필터링하도록 코딩 된 요점이 있습니다 (예 : 특정 클래스에서 상속받은 모델 만 얻으려는 경우).
https://gist.github.com/4633211
Mongoid.models
와
문제를 (스티브 솔루션에 비해, 그것은 또한 네임 스페이스 모델 작업 것은) 분명히에만 이미로드 모델을 반환합니다.
irb(main)> Mongoid.models
=> [Admin, User]
하지만 클래스 Device
를 인스턴스화 한 후 같은 방법을 호출하는 경우, 내가 다른 결과를 얻을 : 나는 레일 콘솔에서 다음과 같은 실험을했다 (: Admin
, User
및 Device
나는 세 가지 모델을 가지고)
irb(main)> Device.last
=> #<Device _id: 52c697494d616308cf380000, type_code: "666", name: "My device">
irb(main)> Mongoid.models
=> [Admin, User, Device]
이렇게하면 문제가 발생할 수 있습니다. 특히 방법이 레이크 작업에서 호출 된 경우 문제가 될 수 있습니다. Chris의 솔루션은 잘 작동하므로, 지금이 순간 최고의 옵션이라고 생각합니다. S (Rails 4로 Steve의 솔루션을 사용할 수는 없습니다).
설명 된 문제를 해결할 'Rails.application.eager_load!'를 포함하도록 답변을 업데이트했습니다. – eltiare
- 1. current_user를 추가하십시오 Mongoid 관계를 찾으십시오
- 2. Mongoid : 임베디드 런타임 모델 만들기
- 3. 설치된 모든 글꼴의 추기가 이름을 찾으십시오
- 4. 내 C++/MFC 응용 프로그램에서 인쇄를 활성화하는 방법을 찾으십시오.
- 5. 내 레일 응용 프로그램에서
- 6. 내 응용 프로그램에서 모든 참조 된 노드
- 7. 내 Asp.net MVC 응용 프로그램에서
- 8. Rails3/Mongoid - 소문자로 모델 저장
- 9. Mongoid 나는 간단한 모델 클래스가
- 10. 여러 응용 프로그램에서 모델 재사용
- 11. 옴 배열에서 모든 레코드를 찾으십시오
- 12. 디자인 패턴의 이름을 찾으십시오
- 13. 호출 찾기 (모든) Mongoid
- 14. 내 응용 프로그램에서
- 15. BitmapFactory.decodeFile(); 내 응용 프로그램에서
- 16. 내 응용 프로그램에서 응용 프로그램에서 구현하는 방법
- 17. 레일, 컨트롤러의 영숫자 검증은 내 응용 프로그램에서
- 18. 내 응용 프로그램에서 데이터 저장소
- 19. 내 프로젝트의 모든 열거 형을 찾으십시오.
- 20. 문제는 내 응용 프로그램에서
- 21. 내 응용 프로그램에서
- 22. 마이그레이션 데이터베이스 내 응용 프로그램에서
- 23. 기존의 모든 wpf 컨트롤을 찾으십시오
- 24. 응용 프로그램에서 사용하는 DLL의 이름을 얻는 방법
- 25. 내 MVC3 응용 프로그램에서 리디렉션 때 나는 내 응용 프로그램에서
- 26. Html.Editor() 도우미 내 ASP.NET MVC 3 응용 프로그램에서 모델
- 27. 다른 모델보기에서 한 모델 데이터를 표시하려면? 내 rails3 응용 프로그램에서
- 28. 를 인라인 내 응용 프로그램에서
- 29. 내 응용 프로그램에서 단축키
- 30. 내 응용 프로그램에서 C#
경고 :'Object.constants'는 이름 공간 모델을 반환하지 않습니다. –