Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在CanCan中正确定义能力

在CanCan中正确定义能力
EN

Stack Overflow用户
提问于 2013-04-26 03:12:57
回答 2查看 71关注 0票数 0

我正在使用CanCan进行授权。下面的代码以我想要的方式为用户工作,即它允许非管理员用户查看自己的页面,但不允许其他用户的页面。然而,定义成绩册功能的那行既允许访问用户的成绩册(它与属于用户的成绩册是一对一的关系),也允许查看其他用户的成绩册。

代码语言:javascript
运行
AI代码解释
复制
class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new
    if user.has_role? :admin
      can :manage, :all
    else
      can :read, User, :id => user.id
      can :read, Gradebook, :user_id => user.id
    end
  end
end

CanCan文档包括以下示例:

代码语言:javascript
运行
AI代码解释
复制
can :read, Project, :active => true, :user_id => user.id

这似乎为我正在尝试做的事情提供了一个模型,但我不能让CanCan在允许访问用户自己的成绩册的同时阻止访问其他用户的成绩册。我也尝试过以下几种方法:

代码语言:javascript
运行
AI代码解释
复制
cannot :read, Gradebook do |book|
  book.user_id != user.id
end

但这阻止了对任何成绩册的访问。我还尝试了无数的其他排列,但都无济于事。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-29 18:19:29

我想通了。这与Gradebook是一个嵌套资源的事实有关。在成绩册控制器中,我最初只是放置了load_and_authorize_resource调用,但我将其更改为:

代码语言:javascript
运行
AI代码解释
复制
load_and_authorize_resource :user
load_and_authorize_resource :gradebook, :through => :user, :singleton => true

然后在我的能力文件中,我使用了以下内容:

代码语言:javascript
运行
AI代码解释
复制
  can :read, Gradebook, :user => { :id => user.id }

现在,它的行为符合预期。

票数 0
EN

Stack Overflow用户

发布于 2013-04-26 03:29:36

我的应用程序中有这样的代码,它工作得很好。你可以试一下:

代码语言:javascript
运行
AI代码解释
复制
def initialize(user)
  user ||= User.new
  if user.has_role? :admin
    can :manage, :all
  else
    can :read, user
    can :read, Gradebook, user: user
  end
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16228144

复制
相关文章
从采集方面分析如何快速的开发一个完整的iOS直播app源码
开发一款直播app,首先需要采集主播的视频和音频,然后传入流媒体服务器,本篇主要讲解如何采集主播的视频和音频,当前可以切换前置后置摄像头和焦点光标,但是美颜功能还没做,可以看见素颜的你,后续还会有直播的其他功能文章陆续发布。
用户4983917
2019/04/01
5990
从采集方面分析如何快速的开发一个完整的iOS直播app源码
AVFoundation 框架初探究(二)
接着第一篇总结 ----       系列第一篇地址:AVFoundation 框架初探究(一)       在第一篇的文章中,我们总结了主要有下面几个点的知识:       1、对AVFoundation框架整体的一个认识       2、AVSpeechSynthesizer这个文字转音频类       3、AVAudioPlayer音频播放类       4、AVAudioRecorder音频录制类       5、AVAudioSession音频会话处理类        上面第一篇说的内容,大致
Mr.RisingSun
2018/03/19
1.8K0
AVFoundation 框架初探究(二)
iOS 音视频采集要点梳理(1)
从 AVCaptureDevcie 捕获的数据,是个抽象类,需要继承后使用,例如**:**AVCaptureDeviceInput,还有其他input 源,可参考Apple 官网文档根据场景选用。
magianter
2021/12/06
7750
iOS 音视频采集
iOS的音视频采集用到了AVCaptureSession。关于AVCaptureSession,苹果的官方文档里的描述如下:
GF
2020/11/27
1.2K0
iOS-AVFoundation自定义相机详解
AVFoundation 中关于视频主要的类 目录 相机基本实现步骤 捕捉会话——AVCaptureSession 捕捉输入——AVCaptureDeviceInput 捕捉预览——AVCaptureVideoPreviewLayer/OpenGL ES 捕捉连接——AVCaptureConnection 拍照——AVCaptureStillImageOutput 音频——AVCaptureAudioDataOutput 视频——AVCaptureVideoDataOutput 生成视频文件——AVA
用户2215591
2018/06/29
2.7K0
AVFoundation 框架介绍
本文是 iOS/Android 音视频开发专题 第九篇,该专题中项目代码将在 Github 进行托管,你可在微信公众号(GeekDev)后台回复 资料 获取项目地址。
100001509164
2019/11/05
3.6K0
AVFoundation 框架介绍
iOS - 采集音视频及写入文件
�音视频采集包括两部分:视频采集和音频采集。在iOS中可以同步采集视频与音频,通过系统框架AVFoundation,可以帮助我们采集音频与视频,对于视频还可以进行切换前后摄像头,最终我们将录制好的视频
LinXunFeng
2018/06/29
1K0
GPUImage详细解析(五)滤镜视频录制
回顾 GPUImage的基础在详细解析1~4。 这次的介绍是录制视频,添加滤镜,保存到手机。 核心思路 通过GPUImageVideoCamera采集视频和音频的信息,音频信息直接发送给GPUIma
落影
2018/04/27
1.9K0
GPUImage详细解析(五)滤镜视频录制
iOS-Core系列框架介绍(二)
音视频相关框架CoreMedia、CoreAudio、CoreVideo、CoreAudioKit、AVFoundation、AVKit 1.CoreMedia 提供对媒体文件操作的底层接口 2.CoreAudio 提供对音频文件操作的底层接口 3.CoreVideo 提供对视频文件操作的底层接口 以上三个框架,在需要对音频或视频创建及展示进行精确控制的应用程序才会涉及,一般应用程序应该都用不上,而我们常用的是下面几个 4.CoreAudioKit import CoreAudioKit.AUView
用户2215591
2018/06/29
1.2K0
c#窗体添加背景音乐_eclipse怎么添加背景音乐
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/09/30
2K0
c#窗体添加背景音乐_eclipse怎么添加背景音乐
AVFoundation框架解析看这里(1)- 概论
Tips:AVFoundation 提供了大量的Demo,其中有些会依赖于自己封装的LEKit,并没有开源,读者在阅读或改写的时候需要注意。 Tips:AVFoundation 提供了大量的Demo,其中有些会依赖于自己封装的LEKit,并没有开源,读者在阅读或改写的时候需要注意。 Tips:AVFoundation 提供了大量的Demo,其中有些会依赖于自己封装的LEKit,并没有开源,读者在阅读或改写的时候需要注意。
sweet说好的幸福
2020/12/23
1.6K0
AVFoundation框架解析看这里(1)- 概论
网站背景音乐HTML代码_ppt播放背景音乐
这篇文章主要为大家详细介绍了HTML5页面背景音乐代码 网页背景音乐通用代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴。
全栈程序员站长
2022/11/08
5.6K0
网站背景音乐HTML代码_ppt播放背景音乐
页面的背景音乐加载很慢
由于我在页面中了<audio>标签来播放一首背景音乐,该音频是一首大小为2.7MB的MP3文件。在第一次加载该页面时,需要花费相当长的一段时间去加载音频。
雨临Lewis
2022/01/11
1.6K0
网页添加背景音乐
为网页添加背景音乐的方法一般有两种,第一种是通过普通的<bgsound>标签来添加,另一种是通过<embed>标签来添加。
全栈程序员站长
2022/11/08
2K0
iOS微信小视频优化心得
image.png 小视频是微信6.0版本重大功能之一,在开发过程中遇到不少问题。本文先叙述小视频的产品需求,介绍了几个实现方案,分析每个方案的优缺点,最后总结出最优的解决方案。 小视频播放需求 可以同时播放多个视频 用户操作界面时视频可以继续播放 播放时不能卡住界面,视频滑进界面内后要立即播放 视频在列表内播放是静音播放,点击放大是有声播放 小视频播放方案 1. MPMoviePlayerController MPMoviePlayerController是一个简单易用的视频播放控件,可以播放本
微信终端开发团队
2018/01/29
4.5K0
iOS微信小视频优化心得
使用AudioToolbox编码AAC
前言 使用VideoToolbox硬编码H.264 使用VideoToolbox硬解码H.264 这次在编码H.264视频流的同时,录制并编码AAC音频流。 介绍 自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。 抽样:对模拟信号进行周期性扫描,把时间上连续的信号变成时间上离散的信号; 量化:用一组规定的电平,把瞬时抽样值用最接近的电平值来表示,通常是用二进制表示; 编码:用一组二进制码组来表示每
落影
2018/04/27
2.1K0
使用AudioToolbox编码AAC
网站如何添加背景音乐
经常有童鞋来问我:“如何在自己的网站上添加背景音乐?网站添加背景音乐是用什么技术手段实现的?”
白黎
2023/03/16
5.1K0
网站如何添加背景音乐
网页背景音乐代码
将这段代码插入到您的<head></head>之间 当您打开网站时即可听到背景音乐: <bgsound src=”/china.mid” loop=”-1″> 这种当网页最小化之后,音乐会消失
全栈程序员站长
2022/09/06
1.2K0
在HTML中添加背景音乐[通俗易懂]
说明:1、使用autoplay=”autoplay”,则背景音乐将在音网页打开后就自动马上播放。
全栈程序员站长
2022/09/15
6K0
点击加载更多

相似问题

ASP.NET MVC4无法按DateTime列对webgrid进行排序

12

如何在mvc 4 webgrid中对DropDownList项进行排序?

12

使用MVC3 Ajax WebGrid进行反向排序

13

使用WebGrid进行排序

20

使用LINQ/.NET MVC对搜索结果进行排序

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档