这个问题一定已经问过了,但我找不到。
我有一个UsersController
和一个Admin::UsersController
。显然,这些类中发生的很多事情(例如 的实现strong_parameters
、创建/编辑用户后要遵循的路径)都是相同的。
我可以——确实,应该吗?- 在这些控制器之间共享代码?这就是担心的原因吗?我在网上为他们找到的示例倾向于处理模型。
非常感谢任何指导。
这个问题一定已经问过了,但我找不到。
我有一个UsersController
和一个Admin::UsersController
。显然,这些类中发生的很多事情(例如 的实现strong_parameters
、创建/编辑用户后要遵循的路径)都是相同的。
我可以——确实,应该吗?- 在这些控制器之间共享代码?这就是担心的原因吗?我在网上为他们找到的示例倾向于处理模型。
非常感谢任何指导。
使用关注点(放入app/controllers/concerns
)
module UsersControllable
extend ActiveSupport::Concern
def new
end
def create
end
private
def user_params
# strong params implementation
end
end
class UsersController < ApplicationController
include UsersControllable
end
class Admin::UsersController < ApplicationController
include UsersControllable
end
一种方法是使用继承。创建一个新的控制器:
class SharedUserController < ApplicationController
# With shared code
end
接着:
class UsersController < SharedUserController
end
class Admin::UsersController < SharedUserController
end
希望这有帮助!