rails cancan gem неинициализированная константа CanCan::Ability::I18n

Я хочу отключить доступ к контроллеру страниц для пользователей с ролью «автор», используя канкан (Райан Бейтс).

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. Кто-нибудь сталкивался с подобной проблемой? Спасибо

Добавление кода способности.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

person Usering    schedule 24.10.2011    source источник
comment
I18n относится к интернационализации (например, разные языки). Вы используете Rails на другом языке, кроме английского?   -  person Alex Peattie    schedule 25.10.2011
comment
Чтобы помочь вам в этом, вы также опубликуете свой файл ability.rb.   -  person janders223    schedule 25.10.2011
comment
@AlexPeattie Некоторые таблицы в базе данных MySQL используют тип сортировки latin1_swedish_ci, другие используют utf8_general_ci. Как вы думаете, это проблема? Спасибо   -  person Usering    schedule 25.10.2011
comment
@ janders223 Добавлен код Ability.rb. Спасибо   -  person Usering    schedule 25.10.2011


Ответы (1)


Вам нужно установить гем i18n. После установки, надеюсь, все заработает.

person Taylor Williams    schedule 04.04.2012