ruby on rails 权限管理gem cancan
2013-11-07 12:13
337 查看
系统的model关系如下:
用户类
class AdminUser
embeds_many :permissions
accepts_nested_attributes_for :permissions, :allow_destroy => true
end
用户能力类
class Ability
include CanCan::Ability
def initialize(user)
can do |action, subject_class, subject|
end
权限类
class Permission
include Mongoid::Document
embedded_in :admin_user
end
首先添加gem: gem "cancan"
admin_user/new.html.erb 新建如下
在新建用户的同时,新建用户对应的权限(复选框为选择权限)
mongoid的 accepts_nested_attributes_for 可以省去很多事。
在mall/index.html.erb 加判断
<% if can? :create, Mall %>
<%= link_to '新建', new_admin_mall_path(), :class => 'btn btn-primary' %>
<% end %>
如果用户有权限新建,新建按钮会显示出来,否则按钮不会出现。
这样的话还有一个问题,能不能在地址栏直接输入http://localhost:3000/admin/malls/new,执行一个新建操作?
为了防止这种情况,我们必须 Protecting malls_Controller.rb
在new方法加入 authorize! if cannot? :new, Mall,防止地址栏执行action.
def new
@mall = Mall.new
authorize! if cannot? :new, Mall
end
这样一个简易的用户权限管理功能就做好了。
JUST DO IT
用户类
class AdminUser
embeds_many :permissions
accepts_nested_attributes_for :permissions, :allow_destroy => true
end
用户能力类
class Ability
include CanCan::Ability
def initialize(user)
can do |action, subject_class, subject|
end
权限类
class Permission
include Mongoid::Document
embedded_in :admin_user
end
首先添加gem: gem "cancan"
admin_user/new.html.erb 新建如下
在新建用户的同时,新建用户对应的权限(复选框为选择权限)
mongoid的 accepts_nested_attributes_for 可以省去很多事。
在mall/index.html.erb 加判断
<% if can? :create, Mall %>
<%= link_to '新建', new_admin_mall_path(), :class => 'btn btn-primary' %>
<% end %>
如果用户有权限新建,新建按钮会显示出来,否则按钮不会出现。
这样的话还有一个问题,能不能在地址栏直接输入http://localhost:3000/admin/malls/new,执行一个新建操作?
为了防止这种情况,我们必须 Protecting malls_Controller.rb
在new方法加入 authorize! if cannot? :new, Mall,防止地址栏执行action.
def new
@mall = Mall.new
authorize! if cannot? :new, Mall
end
这样一个简易的用户权限管理功能就做好了。
JUST DO IT
相关文章推荐
- Ruby on Rails: 使用devise+cancan+rolify建立完整的权限管理系统
- Ruby on Rails: 使用devise+cancan+rolify建立完整的权限管理系统
- Ruby on Rails: 使用devise+cancan+rolify建立完整的权限管理系
- Ruby on Rails: 使用devise+cancan+rolify建立完整的权限管理系
- Ruby on rails开发从头来(windows)(十七)-控制访问权限
- Ruby on rails开发从头来(windows)(十七)-控制访问权限
- 安装Ruby On Rails时运行“gem install rails”没有反应怎么办?
- Ruby on Rails Tutorial 第一章 之 Git项目管理
- 使用 XForms 和 Ruby on Rails 开发小型门诊管理系统,第 2 部分:实现患者信息 Xform
- 安装Ruby On Rails时运行“gem install rails”没有反应怎么办?
- rails权限管理—devise+cancan+rolify
- 使用 XForms 和 Ruby on Rails 开发小型门诊管理系统,第 3 部分:实现护士和医生 XForm
- Radiant: 基于Ruby on Rails的内容管理系统
- 安装Ruby On Rails时运行“gem install rails”没有反应怎么办?
- centos6.5源码安装rubyonrails及其gem插件
- 搭建ruby on rails(3.1)之安装gem mysql2
- rails3beta4 + devise + cancan 打造权限管理系统
- 使用 XForms 和 Ruby on Rails 开发小型门诊管理系统,第 4 部分
- RoR: Ruby On Rails 的 Web Service 2 使用before_invocation进行验证调用权限
- Ruby on Rails环境配置(windows ruby 1.8.6 gem 1.3.1 rails 2.2.3)