2012-01-29 69 views
0

我有一個Reservation模型,我的用戶學生角色可以在線創建預訂。 我已經添加了具有指導者角色的用戶的離線創建保留的能力。將行爲分離爲兩個控制器,這兩個控制器對單個模型起作用

控制器動作創建這兩個流程是完全不同的。關聯的視圖模板也有許多不同之處。

我曾考慮在控制器和視圖中使用if角色==講師檢查,以允許我使用單個控制器來覆蓋兩個流。但我不太喜歡這種方法。


因此,我做了一個單獨的控制器和用於offline_reservations的模板。 這工作正常,但我有問題使用CanCan來控制對它的訪問,因爲兩個控制器使用相同的保留模型。

我沒有做一個其他的變化,我搬到了新的控制器到一個命名空間, 所以現在它位於

/offline/reservations/new 

,而不是

/offline_reservations/new 

但我不知道這是一個改進與否。

有人可以建議什麼是處理這種情況的最佳方法是?

  1. 我對單個模型有兩組截然不同的行爲。我如何讓他們分開。我真的不希望他們都在一個控制器中,但如果這是最好的,那麼就這樣吧。

  2. 既然有一個單一的模式,我需要得到康康舞,讓我來限制訪問每個控制器的類型,但我發現很困難,因爲它們都使用相同的模型

  3. 是用戶命名空間控制器好/壞在這種情況下..

+0

[中授權的命名空間,並使用嵌套慚慚控制器]的可能重複(http://stackoverflow.com/questions/12334367/authorizing-namespaced-and-nested-controllers-using-cancan) – 2013-06-02 17:54:30

回答