Ruby on rails 在Rails应用程序中将路由限制为特定用户

Ruby on rails 在Rails应用程序中将路由限制为特定用户,ruby-on-rails,Ruby On Rails,在我的rails v4应用程序中,用户属于一个组 class User < ActiveRecord::Base belongs_to :group ... 我想做的是,仅当项目与用户具有相同的组id时,才允许用户访问项目和实验(即,如果用户在项目中输入项目id参数,则不会显示组外项目的显示路线)。有没有一种干净的方法可以实现这一点,而不必在视图中进行多次检查?看看如何基于组成员身份构建自定义约束: 非常简单的示例(显然,您需要匹配您的项目设计): 然后在你的路线上: reso

在我的rails v4应用程序中,用户属于一个组

class User < ActiveRecord::Base
  belongs_to :group
  ...

我想做的是,仅当项目与用户具有相同的组id时,才允许用户访问项目和实验(即,如果用户在项目中输入项目id参数,则不会显示组外项目的显示路线)。有没有一种干净的方法可以实现这一点,而不必在视图中进行多次检查?

看看如何基于组成员身份构建自定义约束:

非常简单的示例(显然,您需要匹配您的项目设计):

然后在你的路线上:

resources :projects, constraints: GroupConstraint.new do
  resources :experiments do
      ...
  end
end

请看一看基于组成员身份构建自定义约束:

非常简单的示例(显然,您需要匹配您的项目设计):

然后在你的路线上:

resources :projects, constraints: GroupConstraint.new do
  resources :experiments do
      ...
  end
end

这是授权问题,所以,对我来说,最好定义用户使用任何auhtorization库可以看到什么和看不到什么,而不是使用路由或类似的东西。例如,因为您肯定想知道是否应该在视图中显示给定组的链接,哪些组可供当前用户使用,等等


看一看cancancan,例如:。

这是授权问题,所以,对我来说,最好定义用户可以看到什么和不能看到什么,使用任何auhtorization库,而不是使用路由或类似的东西。例如,因为您肯定想知道是否应该在视图中显示给定组的链接,哪些组可供当前用户使用,等等


看一看cancancan,例如:。

这将从现在开始帮助我的项目。非常感谢。这将有助于我的项目从现在开始。非常感谢。
class GroupConstraint
  def initialize
    @project = Project.find(params[:id])
    @user = current_user
  end
 
  def matches?(request)
    @user.groups.include?(@project.group)
  end
end
resources :projects, constraints: GroupConstraint.new do
  resources :experiments do
      ...
  end
end