Ruby on rails 将行为分离为作用于单个模型的两个控制器

Ruby on rails 将行为分离为作用于单个模型的两个控制器,ruby-on-rails,cancan,Ruby On Rails,Cancan,我有一个预订模型,我的学生角色用户可以在线创建预订。 我已经为具有讲师角色的用户添加了离线创建预订的功能 对于这两个流,控制器操作new和create是完全不同的。关联的视图样板也有许多不同之处 我曾考虑在控制器和视图中使用if role==讲师检查,以允许我使用单个控制器覆盖这两个流。但我真的不喜欢这种方法 因此,我为离线预订制作了一个单独的控制器和模板。 这工作正常,但我在使用CanCan控制对它的访问时遇到了问题,因为两个控制器使用相同的保留模型 我做了另一个改变,我把新的控制器移到了一

我有一个预订模型,我的学生角色用户可以在线创建预订。 我已经为具有讲师角色的用户添加了离线创建预订的功能

对于这两个流,控制器操作new和create是完全不同的。关联的视图样板也有许多不同之处

我曾考虑在控制器和视图中使用if role==讲师检查,以允许我使用单个控制器覆盖这两个流。但我真的不喜欢这种方法


因此,我为离线预订制作了一个单独的控制器和模板。 这工作正常,但我在使用CanCan控制对它的访问时遇到了问题,因为两个控制器使用相同的保留模型

我做了另一个改变,我把新的控制器移到了一个名称空间, 所以现在它位于

/offline/reservations/new 
而不是

/offline_reservations/new
但我不确定这是否是一种进步

有人能告诉我处理这种情况的最佳方法是什么吗

  • 对于一个模型,我有两组不同的行为。我如何将它们分开。我真的不希望它们都在一个控制器中,但如果这是最好的,那就这样吧

  • 由于只有一个模型,我需要让CanCan允许我限制对每种类型控制器的访问,但我发现这很困难,因为它们都使用相同的模型

  • 在这种情况下,命名空间控制器的用户是好还是坏


  • 这似乎是我问题的答案

    可能存在的副本