2012-01-29 70 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

回答