다양한 도메인에서 작동하는 레일 3 사이트를 보유하고 있으며 내 모델 중 하나에서 _set_table_name을 사용하여 요청중인 도메인을 기반으로 테이블 이름을 동적으로 변경하려고합니다. 이것이 가능한가?레일즈 - 도메인에 따른 모델의 set_table_name
1
A
답변
0
set_table_name
은 (는) table_name=
입니다. 이 테스트되지 않은 코드입니다
SomeModel.table_name = request.subdomain=='foo' ? 'foos' : 'bars'
0
참고하지만 내가 레일의 "곡물과 함께"더 생각하는 개념이고, 그것은 그 중요한 배포 스레드 안전해야 : 그것을 사용하십시오.
class SomeModel
def self.subdomain_class(subdomain)
@subdomain_classes ||= {}
unless @subdomain_classes[subdomain]
@subdomain_classes[subdomain] ||= Class.new(self)
@subdomain_classes[subdomain].table_name = "#{self.table_name}_#{subdomain}" # This needs sanitizing, of course
end
@subdomain_classes[subdomain]
end
end
class SomeModelsController
...
private
def CurrentSomeModel
SomeModel.subdomain_class(request.subdomain)
end
end
관련 문제
- 1. 도메인에 따른 웹 사이트 디스플레이의 차이점
- 2. mongoid, set_table_name & attr_accessible
- 3. 레일즈 모델의 한 인스턴스 만
- 4. 레일즈 모델의 after_initialize 콜백을 테스트하는 방법은 무엇입니까?
- 5. 레일즈 3 이메일 속성이없는 모델의 메일러
- 6. 모델의 레일즈 3.x 드롭 다운
- 7. 레일즈 모델의 생성자에서 매개 변수를 사용하는 방법
- 8. 레일즈 - 다른 모델의 필드 유효성 검사
- 9. 레일즈 3. 관련 모델의 속성을 얻으십시오
- 10. 레일즈 - 동일한 모델의 여러 "워크 플로우"
- 11. 레일즈 모델의 일부 필드에 현지화를 추가하는 방법
- 12. 레일즈 3은 두 속성을 합하여 동일한 모델의 다른 속성에 할당합니다.
- 13. 레일즈 3.1에서 두 모델의 조인 범위가 작동하지 않습니다.
- 14. 레일즈 3 form_for에서 assosiated 모델의 인스턴스를 여러 개 만들려면 어떻게해야하나요?
- 15. 도메인 확장에 따른 웹 사이트 현지화
- 16. 선호도에 따른 의도 수신기
- 17. 조건에 따른 가치
- 18. iOS 시장에 따른 현지화
- 19. 스크롤에 따른 문제
- 20. 우선 순위에 따른 지속성?
- 21. 조건에 따른 대리인 정렬
- 22. 윈도우에 따른 플렉스 NumberFormatter
- 23. 날짜에 따른 알파 설정
- 24. 카운트에 따른 메시지 표시
- 25. 확대/축소율에 따른 아이콘
- 26. 방법에 따른 Java 변수
- 27. 디렉토리 경로에 따른 ACL
- 28. 시간에 따른 SQL 백
- 29. QListView 내용에 따른 높이
- 30. 장치에 따른 이미지 축척
이 스레드는 안전한가요? 두 개의 하위 도메인이 동시에 두 개의 스레드에 충돌하는 것처럼 보이면이 모델은 두 테이블 사이에서 table_name을 공유하게됩니다. – Forrest
그게 내가 알고 싶어하는거야. 누구나 대답 있어요? 내 생각 엔 thread-safe가 될 것입니다.하지만 그것은 단지 추측입니다. –
스레드로부터 안전 할 수있는 방법이 없습니다. 이 메소드는 클래스마다 (클래스로드 시간에) 한 번씩 사용되며, 요청마다 동적으로 사용되지 않습니다. –