代码比较简单:
module ActionController #:nodoc:
class CheckGroupError < ActionControllerError #:nodoc:
attr_reader :group_name
def initialize(group_name)
@group_name = group_name
end
end
class CheckRoleError < ActionControllerError #:nodoc:
attr_reader :role_name
def initialize(role_name)
@role_name = role_name
end
end
class Base #:nodoc:
def roles
[]
end
def groups
[]
end
def check_roles(*role_args)
role_args.each do |role|
check_role(role)
end
end
def check_groups(*group_args)
group_args.each do |group|
check_group(group)
end
end
def check_group(group)
raise CheckGroupError.new(group.to_s) unless groups().include?(group.to_s)
end
def check_role(role)
raise CheckRoleError.new(role.to_s) unless roles().include?(role.to_s)
end
end
end
只需要在ApplicationController中实现roles和groups这2个方法,对数据库模式没有任何限制,只要能保证这2个方法能够得到当前用户的角色和组即可。
有4个check方法可用,可任意使用一个或多个。
简单模拟测试一下:
class ApplicationController < ActionController::Base
def roles
%w(add show)
end
def groups
%w(users)
end
end
class TestController < ApplicationController
def test1
check_role :add
render_text "OK"
end
def test2
check_role :add
check_group :users
render_text "OK"
end
def test3
check_groups :admin, :users
render_text "OK"
end
def test4
check_roles :add, :remove
render_text "OK"
end
end
其中,test1、test2都会成功,而test3和test4则会失败显示异常,只需要处理rescue_action把它修改为自己的显示页面即可。
分享到:
相关推荐
"ror文本编辑插件"显然是一种专为Rails应用设计的工具,旨在提升用户在网页上编辑文本的体验。这个插件可能包含丰富的功能,如富文本编辑、格式化选项、图片上传等,使得内容创建更加便捷和直观。 Ruby on Rails是...
RoR(Ruby on Rails)是一种流行的开源Web开发框架,以其高效和简洁的代码著称。然而,随着网站规模的增长,性能优化成为必不可少的环节。在本文中,我们将探讨一些RoR性能优化的关键方面,主要基于JavaEye网站在...
NULL 博文链接:https://xuxiangpan888.iteye.com/blog/266696
**Ruby on Rails(简称RoR)中文资料** Ruby on Rails(RoR)是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程,提高开发效率。RoR强调“约定优于配置”...
**神经网络Ror ResNet模型详解** 在深度学习领域,ResNet(残差网络)模型是具有里程碑意义的创新,由He et al.在2015年提出。该模型解决了深度神经网络训练中的梯度消失问题,允许构建非常深的网络结构。而“Ror”...
基于RoR的博客系统,代码风格简单清晰,前后太完善,适合初学者。
**初探ROR** Ruby on Rails(简称ROR)是一个基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在促进开发过程的简洁性和效率。Ruby on Rails的核心理念是“Don't Repeat ...
在Ruby on Rails(ROR)开发环境中,安装和配置正确的依赖包是至关重要的。这个压缩包包含了一系列用于ROR框架的基础组件,但不包括Ruby本身。让我们深入了解一下这些包的作用和重要性。 首先,`actionpack`是Rails...
Ruby on Rails(简称RoR或Rails)是一种基于Ruby语言的开源Web应用框架,它遵循Model-View-Controller(MVC)架构模式,旨在提高开发效率并提供简洁、优雅的代码结构。"ror实例"可能指的是在学习或实践中,通过创建...
RoR News-crx插件是一款基于Chrome浏览器的扩展程序,主要设计用于与Project Broomble的JSONp API进行交互,以实现对Link Aggregator服务Broomble的集成和使用。这款插件是英文版本,因此面向的是全球英文用户群体。...
Ruby on Rails(RoR)是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在简化Web开发过程。在这个选题方向中,我们主要探讨的是与RoR相关的源代码分析和学习。源代码是...
### Windows上搭建Ruby on Rails(ROR)环境详解 #### 一、引言 随着Web开发技术的不断发展,Ruby on Rails(简称Rails或ROR)作为一种高效、简洁且优雅的Web开发框架,受到了广大开发者的青睐。然而,在Windows...
描述中提到的“插件”可能是指RoR的一些中文支持插件,这些插件可以帮助开发者更好地处理中文字符集,避免编码错误。同时,它提到了“mysql-front备份文件”,这通常指的是一个用于图形化管理MySQL数据库的工具,...
总结来说,配置ROR开发环境包括安装Ruby、Rails,创建ROR项目,以及在Eclipse中设置ROR插件和导入项目。在Eclipse中进行ROR开发,可以充分利用其丰富的功能,提升开发效率。理解并熟练运用ROR的MVC架构和相关工具,...
### RoR培训课程PPT知识点概述 #### 一、课程概览与背景介绍 - **课程性质**:本课程为为期五天的Ruby on Rails(简称RoR)入门级培训,适合初学者快速掌握RoR的基本概念和技术要点。 - **讲师信息**:由Peter ...
### ROR 文件的上传与下载:深入解析与实践 在Ruby on Rails(简称ROR)框架下,处理文件的上传与下载是一项常见的需求,尤其是在构建包含媒体内容的应用程序时。本文将基于给定的文件信息,详细阐述如何在Rails...
4. **社区支持**:RoR拥有庞大的开发者社区,这意味着FreeMIS可以利用众多开源插件和库,以及丰富的文档和教程资源。 5. **安全性**:RoR内置了多种安全机制,如CSRF(跨站请求伪造)防护、XSS(跨站脚本)防护等,...