apartment
및 devise
보석을 사용하여 멀티 테넌트 (multi-tenant) 앱을 만들었습니다. 이후 postgresql을 사용하고 있기 때문에 apartment
gem은 각 임차인마다 별도의 스키마를 생성합니다. 내 데이터베이스는 소수 테이블로 user
테이블이 공용 네임 스페이스에 있지만 pages
테이블은 각 테넌트 특정 스키마에 있습니다. 각 임차인에게 개별적으로 로그인 할 수 있으며 각 임차인의 페이지 테이블에 대한 별도의 기록을 만들 수 있습니다.레일 : 멀티 테넌트 (multi-tenant) 앱과 동적 라우팅
지금, 나는이 문서가이이 tenant1.example.com/page-slug-here
같은 형식으로 액세스하려면, 나는 내 routes.rb
파일에 규칙을 다음했습니다 : 응용 프로그램이 단일 때
Page.where.not(slug: nil).all.each do |page|
get "/#{page.slug}", controller: "pages", action: "show", id: page.id
end
이 라우팅 규칙은 잘 작동했다 멀티 테넌시에서는 작동하지 않고 "경로 일치 없음"오류가 발생합니다.
위의 라우팅 규칙에서 데이터베이스 호출이 세입자 특정 스키마 대신 public
스키마에서 찾고 있다고 생각합니다. 이 문제를 해결하는 방법?