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