Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails超级用户资源上下文_Ruby On Rails_Devise_Cancan - Fatal编程技术网

Ruby on rails Rails超级用户资源上下文

Ruby on rails Rails超级用户资源上下文,ruby-on-rails,devise,cancan,Ruby On Rails,Devise,Cancan,我正在开发的应用程序围绕着属于组织的用户,并且只能访问这些组织中的资源。这很好,而且非常直接 该系统还拥有任何组织以外的用户,他们可以查看系统内的任何内容。当其中一个用户登录时,他们会得到一份他们想要查看的组织列表。然后,选择一个,就可以让他们看到系统,就好像他们是作为标准用户登录的一样,但保留他们的超级用户权限 有没有一种好方法可以让系统知道某个特定的组织已经被选中,而不必为每个路径都设置嵌套资源 例如,我想以超级用户身份登录,查看OrganizationA。我希望能够选择组织,并简单地离开

我正在开发的应用程序围绕着属于组织的用户,并且只能访问这些组织中的资源。这很好,而且非常直接

该系统还拥有任何组织以外的用户,他们可以查看系统内的任何内容。当其中一个用户登录时,他们会得到一份他们想要查看的组织列表。然后,选择一个,就可以让他们看到系统,就好像他们是作为标准用户登录的一样,但保留他们的超级用户权限

有没有一种好方法可以让系统知道某个特定的组织已经被选中,而不必为每个路径都设置嵌套资源

例如,我想以超级用户身份登录,查看OrganizationA。我希望能够选择组织,并简单地离开

/subjects
而不是去看电影

/organisations/1/subjects

有什么好办法吗?

如果不通过url传递上下文,可以在会话中存储选定的组织。会话方法的问题是,由于您依赖会话中存储的数据,因此无法直接链接到这些页面。

如果链接从未更改,当然可以吗?只有当登录的用户是超级用户时,会话才会存储该上下文。所有其他用户实际上都属于一个组织,因此不需要该会话。因此,如果链接是指向/subjects,那么无论谁登录,链接仍然是/subjects。然后,如果以shine管理员身份登录,它将在会话中加载组织的主题,但如果正常用户登录,它将加载他们自己组织的主题?