加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

rails3beta4 + devise + cancan 打造权限管理系统

发布时间:2020-12-13 17:48:31 所属栏目:百科 来源:网络整理
导读:rails3beta4 + devise + cancan 打造权限管理系统 为后面的项目做准备, 先拿来练练手。 rails的环境搭建不再重复,先新建项目 rails new passport -d=postgresql 配置postgresql的帐号密码 rake db:create 启动rails,查看http://localhost:3000,一切正常 配

rails3beta4 + devise + cancan 打造权限管理系统

为后面的项目做准备, 先拿来练练手。

rails的环境搭建不再重复,先新建项目

rails new passport -d=postgresql

配置postgresql的帐号密码

rake db:create 

启动rails,查看http://localhost:3000,一切正常

配置Gemfile

gem 'devise','1.1.rc2'
gem 'cancan'
gem 'haml'
gem 'rails3-generators',:group => :development

开始安装Gem

bundle install

将haml作为默认模板,编辑config/application.rb

config.time_zone = 'Beijing'
config.i18n.default_locale = 'zh-CN'
config.generators do |g|
   g.template_engine :haml
end

安装haml

rails g haml:install

安装devise

rails g devise:install

使用devise工具生成user

rails g devise user

生成home页面

rails g controller home index

修改route,将默认页面转到home页面,在home_controller里加上一行

before_filter :authenticate_user!

执行migrate, 重新打开页面,便会跳转到http://localhost:3000/users/sign_in

说明devise安装成功

后面准备中文化操作


现在将整个页面汉化一下

首先,我们已经在application.rb里配置了local为 zh-CN, 然后到

http://github.com/tsechingho/rails-i18n/blob/master/rails/locale/zh-CN.yml

下载已经配置好的中文包到config/locales里,这样,rails的中文化已经做好了。

接下在做devise的汉化。

devise自己有自己的i18n文件,所以我们将config/locales里的devise.en.yml重命名为devise.zh-CN.yml,将里面的英文翻译为中文即可。

接下来做view上面的汉化

首先执行

rails g devise:views

就会在views下面生成devise的默认页面, 在里面进行修改即可(这一步生成的页面是erb).

接下来是cancan,负责授权工作

首先,建立app/models/ability.rb,内容如下:

class Ability include CanCan::Ability def initialize(user) if user.role == 'admin' can :manage,:all else can :read,:all end end end

在app/models/user.rb里加入

class User < ActiveRecord::Base ROLES = %w[admin moderator author banned] end

在user.rb里加个字段

script/generate migration add_role_to_users role:string rake db:migrate

这样,就可以在views里调用can?或着cannot?方法来判断用户角色

<% if can? :update,@article %> <%= link_to "Edit",edit_article_path(@article) %> <% end %>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读