【问题标题】:rails cancan gem uninitialized constant CanCan::Ability::I18nrails canscan gem 未初始化常量 CanCan::Ability::I18n
【发布时间】: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


【解决方案1】:

您需要安装 i18n gem。安装后,它应该可以正常工作。

【讨论】:

    猜你喜欢
    • 2022-01-01
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多