Rails:同一型号的两个控制器

时间:2012-08-28 16:38:57

标签: ruby-on-rails ruby model-view-controller

我有一个模型User和一个相应的UsersController。由于项目更改,用户模型的相同,确切功能需要在CentersController中,当然还有中心的附加功能。 UsersController按原样保留。

设计问题是如何使用UsersController方法(更新,编辑,创建等)而不在CentersController中复制它们?例如,在中心视图中更新用户时,将调用用户控制器的更新操作,但应将查看器重定向回中心视图。

1 个答案:

答案 0 :(得分:2)

这就是模块或“mixin”的用途。您将常用方法放在模块中,并将该模块包含在UsersControllerCentersController中。

module Foo
  def bar
  end
end

class UsersController < ApplicationController
  include Foo
end

class CentersController < ApplicationController
  include Foo
end

或者,将您的公共代码放在控制器中,并从该控制器继承:

class FooController < ApplicationController
  def bar
  end
end

class UsersController < FooController
end

class CentersController < FooController
end