我正在使用 cancan gem 进行授权。我已经定义了ability.rb 模块来初始化不同模块的角色及其权限。
`def initialize(user)
user ||= User.new # guest user (not logged in)
members = user.members
members.each do |member|
role = member.role
if role.presence
permissions = role.permissions
permissions.each do |permission|
actions = Array.new
actions = permission.activity_name.split(",") if permission.activity_name.presence
app_module = permission.application_module
actions.each do |action|
if app_module.module_name == "Project"
Rails.logger.debug "in if"
can action.downcase.to_sym, app_module.module_name.constantize, :id => member.project_id if action.presence
elsif app_module.module_name == "Sequence"
Rails.logger.debug "in sequence and project id is #{member.project_id} and action is #{action}"
can action.downcase.to_sym, app_module.module_name.constantize, :project_id => 0..1 if action.presence
else
Rails.logger.debug "Module name is #{app_module.module_name}"
can action.downcase.to_sym, app_module.module_name.constantize if action.presence
end
end
end
end
end
结束`
在这里,用户分配了一个项目,并且项目有很多序列。如果用户分配了一个 id 为 1 的项目,那么我必须只获取那些项目 id 为 1 的序列
在控制器中我写了 -
load_and_authorize_resource
项目控制器的权限已正确获取,但对于序列控制器,如果我传递项目 ID,它也不限于其他项目。
谁能帮帮我吗