自定义约束可以路由到多个控制器操作吗?

时间:2017-04-09 02:55:01

标签: ruby-on-rails

目前我正在使用链接到单个路线的自定义约束,如:

get '/hello', to: 'account#index', 
        constraints: AccountConstraint.new

基本上我的自定义约束是查找request.host,如果在数据库中找到匹配项?方法将返回true,然后将调用帐户#index action。

我想要做的是,如果约束匹配,那么根据路径,它将执行不同的操作。

所以我的约束就像:

class AccountConstraint
  def matches?(request)
    # lookup the database, return true if record found
  end
end

然后我希望我的route.rb文件做这样的事情(_:

下面的伪代码
if AccountConstraint matches
  get '/', to: "account#index"
  get '/hello', to: "account#hello"
end

这样的事情可能吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:2)

我不确定我是否理解这个问题,但听起来你想要的是scope

scope constraints: AccountConstraint.new do
  get '/', to: "account#index"
  get '/hello', to: "account#hello"
end

只有AccountConstraint匹配时才能访问范围内的路径。