【发布时间】:2011-10-24 20:02:01
【问题描述】:
我想使用 cancan(由 Ryan Bates 编写)禁用具有“作者”角色的用户对 Pages 控制器的访问。
PagesController如下
class PagesController < ApplicationController
def new
@page = Page.new
authorize! :update, @page
...
end
...
end
这将返回未初始化的常量 CanCan::Ability::I18n 请注意,当我使用时会发生同样的事情 load_and_authorize_resource 过滤而不是 授权! :更新,@页面
我使用的是 Rails 2.2.3。 有没有人遇到过类似的问题? 谢谢
添加ability.rb代码:
class Ability
include CanCan::Ability
def initialize(current_user)
user = User.find(:first, :conditions => ["username = ?", current_user])
user ||= User.new # guest user
if user.role?('admin')
can :manage, :all
can :manage, WpArticle
elsif user.role?('moderator')
can :manage, :all
elsif user.role?('author')
can :create, WpArticle
can :update, WpArticle
can :read, WpArticle
end
end
end
【问题讨论】:
-
I18n 指的是国际化(例如不同的语言)。您是否使用英语以外的其他语言运行 Rails?
-
为了更好地帮助您,您还将发布您的
ability.rb文件。 -
@AlexPeattie MySQL 数据库中的一些表使用排序规则类型 latin1_swedish_ci,其他表使用 utf8_general_ci。你认为这是一个问题吗?谢谢
-
@janders223 添加了ability.rb 代码。谢谢
标签: ruby-on-rails ruby authorization cancan activesupport