2

我有一个模型用户和相应的用户控制器。由于项目的变化,用户模型的相同、精确的功能需要在 CentersController 中,当然只有 Centers 的附加功能。UsersController 保持原样。

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

4

1 回答 1

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
于 2012-08-28T16:41:31.290 回答