rails3beta4 + devise + cancan 打造权限管理系统
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 %> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |