2011-09-27 2 views
4

사용자가 현재 선택한 회사 (세션 변수를 설정하는 데 사용되는 사이드 바의 드롭 다운 상자)에 따라 다른 데이터 세트가있는 응용 프로그램이 있습니다.Rails - 열려있는 각 탭/창에 대해 고유 한 데이터 저장

내 고객은 단일 브라우저에서 여러 개의 다른 데이터 세트를 동시에 작업 할 수있는 능력이 있음을 표명했습니다. 따라서 세션은 더 이상이를 자르지 않습니다.

인터넷 검색은 모든 요청과 함께 데이터를 가져 오거나 게시하는 것을 의미하는 것처럼 보입니다. 내 첫 번째 추측이었습니다. 이것을 달성하는 더 나은/쉬운/레일 방법이 있습니까?

답변

4

여기에 몇 가지 옵션이 있지만, 동일한 브라우저의 모든 인스턴스에서 글로벌이므로 session 시스템은 작동하지 않습니다.

표준 접근 방식은 실행 컨텍스트를 식별하는 URL을 URL에 추가하는 것입니다. 이것은 /users 대신에 /companyx/users과 같은 접두사처럼 간단 할 수 있습니다. 여기서 회사 슬러그를 가져와 범위로 사용합니다. 일반적으로이 작업을 수행하는 컨트롤러 기본 클래스를 가져 와서 같은 방식으로 영향을받는 다른 모든 컨트롤러에 대한 상속을 상속받습니다.

또 다른 방법은 회사 식별 구성 요소를 URL에서 호스트 이름으로 이동하는 것입니다. 이는 서비스 제공 업체 (software-as-a-service) 제공자들 사이에서 흔히 볼 수있는 일입니다. myapp.com/companyx/users 대신 companyx.myapp.com/users이 있어야합니다. 이렇게하면 기존 URL 구조를 유지할 수 있다는 이점이 있습니다. 많은 양의 데이터가있을 때 고객이 두통이없는 다른 데이터베이스로 앱을 분할 할 수 있습니다.

GET 토큰 또는 POST 입력란을 사용하여 모든 URL에 태그를 추가 한 결과 매우 잘 작동하지 않습니다. 하나는 지저분 해요. 둘째, POST가되는 모든 링크가있는 사이트는 뒤로 버튼으로 탐색하거나 성가신로드를 강요하므로 작업하기가 매우 짜증납니다. 그것이 사용 된 이유는 PHP와 ASP가 지원 경로를 가지고 있지 않기 때문에 사람들이해야만했기 때문입니다.

+1

감사합니다. 나는 회사 이름을 회사 이름으로 옮길 것을 제안 할 것입니다. 그것은 우리의 미래 요구를 잘 잡을 것입니다. 나는 더 좋은 방법이 있어야한다는 것을 알았다! – Roganartu

1

임시 데이터베이스 테이블을 만들거나 키 - 값 데이터베이스를 사용하여 필요한 모든 데이터를 저장할 수 있습니다. uniq 키는 창 ID로 사용할 수 있습니다. 또한 각 링크에이 창 ID를 추가해야합니다. 따라서 데이터베이스의 각 브라우저 탭에 해당하는 데이터를 받아서 세션, 객체 등에서 저장할 수 있습니다.

개체가 있으면 @data를 사용하여 데이터베이스에 저장할 수 있습니다. 마샬 군. 마샬과 함께 다시 가져와.로드.

관련 문제