我有一个模型User和一个相应的UsersController。由于项目更改,用户模型的相同,确切功能需要在CentersController中,当然还有中心的附加功能。 UsersController按原样保留。
设计问题是如何使用UsersController方法(更新,编辑,创建等)而不在CentersController中复制它们?例如,在中心视图中更新用户时,将调用用户控制器的更新操作,但应将查看器重定向回中心视图。
答案 0 :(得分:2)
这就是模块或“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