Rails的中间人控制器

时间:2016-05-09 20:35:29

标签: ruby-on-rails routes controllers

我的应用程序有两个应用程序控制器。保存所有内部信息并检查用户是否已登录的信息。 另一个应用程序控制器位于名为external的名称空间下。 此控制器允许用户使用令牌转到某些URL,并且令牌表示经过验证以查看令牌是否属于公司的公司。这样用户不需要记录它,他们只需要知道他们的uniq令牌。

我面临的问题是我想要重用的自动完成方法属于我的主应用程序控制器,但是这个控制器会检查用户是否已登录,所以如果我尝试搜索,我会得到401外在的一面。

我知道rails中没有双重继承,但有没有办法让控制器属于两个不同的控制器?这样我就可以将所有自动完成方法都放在这个控制器中,我的应用程序控制器都可以访问它。

我想在控制器中保留自动完成方法的主要原因是我可以为它们建立路由并让操作返回JSON,以便JQuery自动完成可以使用此信息。

先谢谢你们,如果我想到这个错误,请告诉我以及你可能要做的任何其他想法。

1 个答案:

答案 0 :(得分:1)

您可以通过使用自动完成方法(以及您希望在控制器之间共享的任何其他方法)创建模块来完成此操作,并将模块包含在相应的控制器中。

module ModuleName
  def some_method
    ...
  end
  ...
end

在控制器中:

class ControllerName < ApplicationController
  include ModuleName
  ...
end

some_method将在ControllerName和包含该模块的任何其他控制器

中可用