Ruby on rails 实施客户范围界定

Ruby on rails 实施客户范围界定,ruby-on-rails,ruby-on-rails-3,routes,Ruby On Rails,Ruby On Rails 3,Routes,目前在我的应用程序中,我有项目和用户的概念。现在我想为这些实现一个帐户范围,这样项目和用户都属于一个帐户,而不是什么都不属于。通过这样做,我希望我的路线范围如下: scope ":account_id" do resources :projects ... end project_path(current_account, project) 但是,通过使用命名参数实现路由作用域,这将更改路由帮助程序的执行方式,从而项目路径路由帮助程序现在需要两个参数,一个用于帐户id参数

目前在我的应用程序中,我有项目和用户的概念。现在我想为这些实现一个帐户范围,这样项目和用户都属于一个帐户,而不是什么都不属于。通过这样做,我希望我的路线范围如下:

 scope ":account_id" do
   resources :projects
   ...
 end
  project_path(current_account, project)
但是,通过使用命名参数实现路由
作用域
,这将更改路由帮助程序的执行方式,从而
项目路径
路由帮助程序现在需要两个参数,一个用于
帐户id
参数,另一个用于
id
参数,使其类似于以下情况:

 scope ":account_id" do
   resources :projects
   ...
 end
  project_path(current_account, project)
这个微小的
范围
更改要求我在使用这些路径助手的控制器和视图中对整个应用程序进行大量更改


当然,当然,当然,有一种干净的方法可以做到这一点,而不必更改应用程序中的每个路由帮助程序?

使用默认的\u url\u选项哈希为:account\u id:

class ApplicationController < ActionController::Base
  protect_from_forgery

  before_filter :set_default_account_id

  def set_default_account_id
    self.default_url_options[:account_id] = current_account
  end
end
通过将:account\u id作为散列参数传递给路由,可以在视图中覆盖它:

project_path(project, :account_id => other_account)

请注意,这在控制台中不起作用。

自Rails 3.0以来,通过以下方式操作url参数更为简单:

class ApplicationController