代码比较简单:
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把它修改为自己的显示页面即可。
分享到:
相关推荐
一个牛b的ror文本编辑插件
ror实例ror实例ror实例
RoR性能优化经验谈,牛人对ror的优化,值得大家阅读
ror中文资料ror中文资料
NULL 博文链接:https://xuxiangpan888.iteye.com/blog/266696
ROR 架构介绍及了解
基于RoR的博客系统,代码风格简单清晰,前后太完善,适合初学者。
神经网络ror resenet模型 cifar10准确率89% cifar100准确率72%
之前本人在windows 上搭建ROR环境,屡屡受挫,上网查资料、加入ruby on rails的qq群,关注ruby社区等,没有得到一套完整的正确的方法,很多朋友说不要在windows 弄ROR,很费力。的确很费力,后来在朋友的帮助下,...
RoR选题方向—源代码
家蚕Ror2基因的克隆与表达分析,刘伟,陈菲,Ror家族属于受体酪氨酸激酶中的孤儿受体,在进化上非常保守。本研究克隆了家蚕Ror2基因BmRor2的ORF序列,BmRor2基因的ORF为1924 bp,编码638
ROR环境 Ruby version 1.9.3 (java) RubyGems version 1.8.24 Rack version 1.4 Rails version 3.2.12 JavaScript Runtime therubyrhino (Rhino) Active Record version 3.2.12 Action Pack version 3.2.12 ...
Project Broomble应用程序使用JSONp API。 适用于我们的Link Aggregator服务Broomble的Chrome应用 支持语言:English
破解版本的JAR包,放到本地磁盘,ECLIPUS直接用,到JVM设置直接加 -noverify -javaagent:D:\javarebel.jar
mysqlDriver4ror.rarmysqlDriver4ror.rarmysqlDriver4ror.rarmysqlDriver4ror.rar
插件,可以不用到那个网站上去下了,还有mysql-front备份文件,大家可以直接导入。 博文链接:https://msdn.iteye.com/blog/44807
excel lib ror ruby
我自己再开发时的笔记
简单介绍个ror的应用.以及其它方面。ROR介绍演讲课件 ruby on rails。
Source.Insight.v3.50.0027-ROR.rar