2011-10-24 16 views
0

cancan(Ryan Batesによる)を使用して、ロール "author"を持つユーザのページコントローラへのアクセスを無効にしたいとします。racan cancan gem uninitialized constant CanCan :: Ability :: I18n

をPagesControllerは、次のとおりです。

class PagesController < ApplicationController 
    def new 
    @page = Page.new 
    authorize! :update, @page 
    ... 
    end 
    ... 
end 

これは私が代わりに認可 の load_and_authorize_resource フィルタを使用する場合、同じことが起こることを、初期化されていない一定のカンカン::機能::国際化 注意を返して! :update、@page

私は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 
+0

I18nは、国際化(例えば、異なる言語)を意味します。あなたは英語以外の言語でRailsを実行していますか? –

+0

これをうまく助けるために、あなたの 'ability.rb'ファイルも投稿します。 – janders223

+0

@AlexPeattie MySQLデータベースの一部のテーブルは照合タイプlatin1_swedish_ciを使用し、他のテーブルはutf8_general_ciを使用します。これは問題だと思いますか?ありがとう – Usering

答えて

0

あなたは国際化宝石をインストールする必要があります。インストールしたら、うまくいくはずです。