ruby-on-rails – 实现帐户范围

目前在我的应用程序中,我有项目和用户的概念.现在我想为这些实现一个帐户范围,以便项目和用户都属于一个帐户,而不是特别是没有.通过这样做,我想像这样我的路线:
scope ":account_id" do
   resources :projects
   ...
 end

但是,通过使用命名参数实现路由选择范围,可以改变路由助手执行的方式,以便project_path路由助手现在可以使用两个参数,一个用于account_id参数,一个用于id参数,使其类似于此:

project_path(current_account,project)

这个微小的范围变化需要我在控制器和视图中使用这些路径帮助器的应用程序进行大量更改.

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

解决方法

使用default_url_options哈希来添加默认值:account_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

然后,您可以使用url帮助器单个参数:

project_path(project)

通过将account_id作为哈希参数传递给路由,可以在视图中覆盖它:

project_path(project,:account_id => other_account)

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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...