4

这个问题一定已经问过了,但我找不到。

我有一个UsersController和一个Admin::UsersController。显然,这些类中发生的很多事情(例如 的实现strong_parameters、创建/编辑用户后要遵循的路径)都是相同的。

我可以——确实,应该吗?- 在这些控制器之间共享代码?这就是担心的原因吗?我在网上为他们找到的示例倾向于处理模型。

非常感谢任何指导。

4

2 回答 2

13

使用关注点(放入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
于 2013-10-08T01:02:21.333 回答
0

一种方法是使用继承。创建一个新的控制器:

class SharedUserController < ApplicationController
  # With shared code
end

接着:

class UsersController < SharedUserController
end

class Admin::UsersController < SharedUserController
end

希望这有帮助!

于 2013-10-07T17:32:07.967 回答