Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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 使用cancan让用户只管理一些模型_Ruby On Rails_Ruby_Cancan - Fatal编程技术网

Ruby on rails 使用cancan让用户只管理一些模型

Ruby on rails 使用cancan让用户只管理一些模型,ruby-on-rails,ruby,cancan,Ruby On Rails,Ruby,Cancan,我有一个简单的公告板系统,它是用rails(和Desive)构建的 我想将cancan添加到系统中,但我在定义一些规则时遇到问题 简而言之,我的应用程序有一个用户模型、一个论坛模型和一个ForumModeration模型。 代码(简化): class用户

我有一个简单的公告板系统,它是用rails(和Desive)构建的

我想将cancan添加到系统中,但我在定义一些规则时遇到问题

简而言之,我的应用程序有一个用户模型、一个论坛模型和一个ForumModeration模型。 代码(简化):

class用户[:版主论坛id]
结束
如您所见,用户可以主持
N
论坛,论坛也可以由
N
用户主持。 我的问题是:

如何定义用户只能
:根据这些模型管理特定论坛?

我读过这篇文章:


但由于我的用户模型中没有可用于此目的的列,所以我被卡住了。

据我所知,您只需正确定义您的条件即可。您需要将当前的论坛变量传递给initialize方法,然后使用它来确定当前的论坛用户是否有权访问该论坛

def initialize(user, current_forum = nil)
  user ||= User.new # guest user (not logged in)
  if user.moderated_forums.include?(current_forum)
    # user is moderator
  else
    # user is not moderator
  end
end
您可以将
current\u forum
定义为
before\u filter
方法,并将其放入您想要使用的控制器中,或者将
ApplicationController
放入您不需要的控制器中
skip\u before\u filter

签出
def initialize(user, current_forum = nil)
  user ||= User.new # guest user (not logged in)
  if user.moderated_forums.include?(current_forum)
    # user is moderator
  else
    # user is not moderator
  end
end