复制 Rails 代码的最佳方法是什么?

What's the best way to duplicate Rails code?

所以我开发了数据库的前端。控制器具有全部 7 个标准动作以及更多。视图由索引、编辑、新建等组成。现在我需要再制作 3 个,它们唯一不同的地方实际上是一行,因为我正在为每个控制器操作调用 table 到 fetch/edit 信息唯一不同的是每个数据库视图的 table 名称。如果不只是将相同的代码复制 3 次并更改一个变量,有什么好的方法可以做到这一点?

控制器示例:

server = windows_prod

def index
  @servers = connection.exec_query("SELECT [COL1]...[COLN] FROM #{server}")
end

其余的操作都是按照这些思路进行的,唯一需要更改的是顶部的服务器分配。

考虑将可重用控制器逻辑放入 Mixin 中。这看起来像:

module ReusableControllerLogic

  def index
    @servers = connection.exec_query("SELECT [COL1]...[COLN] FROM #{server}")
  end

  def show
    # Blah
  end
end

现在,您可以在定义名为 server 的方法的任何控制器上使用此 Mixin。此方法应 return 所需的服务器名称:

class AwesomeController < ApplicationController
  include ReusableControllerLogic

  private
  def server
    "awesome"
  end
end