在我的rails应用程序(我使用devise和cancan)中,每个(注册)用户都属于,完全是一个角色('管理员'或'用户'),而是至少一组(类似'家庭','朋友','同事')。在运行时,当创建一个新文件夹(见下文)时,可以设置与一个或多个组的habtm关系,该关系定义谁可以访问该文件夹。如果选择否组应该会导致在全球范围内访问文件夹(即用户不必登录即可访问这些文件夹)。但现在,我还不知道如何在我的ability.rb中定义这样的全球可访问的文件夹,因为我不知道如何定义“可以读取没有与其关联的组的文件夹”。在角色和组模型更复杂的环境中定义能力
我app/models/ability.rb
的相关片段看起来是这样的:
user ||= User.new
if user.role? :Administrator
can :manage, :all
elsif user.role? :Users
# user should only be able to read folders, whose associated groups they are member of
can :read, Folder, :groups => { :id => user.group_ids }
else
# here goes the world-wide-accessible-folders part, I guess
# but I don't know how to define it:
## can :read, Folder, :groups => { 0 } ???
end
我app/controllers/folders_controller.rb
的相关片段看起来是这样的:
class FoldersController < ApplicationController
before_filter :authenticate_user!
load_and_authorize_resource
有人可以给我一个提示?
哇,怪异! :) 谢谢。猜猜它需要一段时间才能完成。 – dennis