我有一个模型用户和相应的用户控制器。由于项目的变化,用户模型的相同、精确的功能需要在 CentersController 中,当然只有 Centers 的附加功能。UsersController 保持原样。
设计问题是如何使用 UsersController 方法(更新、编辑、创建等)而不在 CentersController 中复制它们?例如,当用户在 Centers 视图中更新时,将调用 User 控制器的 Update 操作,但应将查看器重定向回 Centers 视图。
我有一个模型用户和相应的用户控制器。由于项目的变化,用户模型的相同、精确的功能需要在 CentersController 中,当然只有 Centers 的附加功能。UsersController 保持原样。
设计问题是如何使用 UsersController 方法(更新、编辑、创建等)而不在 CentersController 中复制它们?例如,当用户在 Centers 视图中更新时,将调用 User 控制器的 Update 操作,但应将查看器重定向回 Centers 视图。
这就是模块或“mixin”的用途。您将常用方法放在一个模块中,并将该模块包含在UsersController
和CentersController
中。
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