2012-01-29 3 views
0

예약 모델을 보유하고있는 사용자 학생 역할을 사용하면 온라인으로 예약을 만들 수 있습니다. 강사 인 역할을 가진 사용자에게 오프라인 예약 기능을 추가했습니다.하나의 모델에 대해 작동하는 두 개의 컨트롤러로 동작 구분

및 컨트롤러 동작은 이러한 두 가지 흐름에서 상당히 다릅니다. 연관된보기 템플리트에는 여러 가지 차이점이 있습니다.

컨트롤러와 뷰에서 if 역할 == 강사 검사를 사용하여 하나의 컨트롤러로 두 플로우를 모두 커버 할 수 있도록 고려했습니다. 그러나 나는 그 접근법을 정말로 좋아하지 않는다.


대신 대신 offline_reservations에 대한 별도의 컨트롤러와 템플릿을 만들었습니다. 이 작업은 정상적으로 처리되었지만 CanCan을 사용하여 문제가 발생하여 두 컨트롤러가 동일한 Reservation 모델을 사용하기 때문에 CanCan을 사용하여 액세스를 제어하는 ​​데 문제가있었습니다. 나는 다른 한 변경했다

, 나는, 는 그래서 지금이

/offline/reservations/new 

대신

/offline_reservations/new 

에 위치한 네임 스페이스에 새 컨트롤러를 이동하지만 그 경우에 확실하지 않다 개선 또는 아닙니다.

이 시나리오를 처리하는 가장 좋은 방법은 누군가에게 조언을 줄 수 있습니까?

  1. 단일 모델에 대해 두 가지 동작 집합이 있습니다. 어떻게 그들을 분리시켜야합니까? 나는 그들 모두를 하나의 컨트롤러에두기를 원하지 않지만, 그것이 최선이라면 그렇게 될 것입니다. 사용자가 단일 모델이 있기 때문에

  2. , 나는 캉캉 날 컨트롤러의 각 유형에 대한 액세스를 제한 할 수 있도록 얻을 필요가 있지만, 모두 같은 모델

  3. 을 사용하기 때문에 그 어려운 발견하고 이 경우에는 네임 스페이스가있는 컨트롤러가 좋거나 나쁘다.

+0

[인증 중 네임 스페이스를 사용하고 캉캉 중첩 컨트롤러]의 중복 가능성 (http://stackoverflow.com/questions/12334367/authorizing-namespaced-and-nested-controllers-using-cancan) –

답변

관련 문제