#ruby-on-rails #ruby #authorization #cancan #activesupport
#ruby-on-rails #ruby #авторизация #cancan #activesupport
Вопрос:
Я хочу отключить доступ к контроллеру страниц для пользователей, имеющих роль «автор», используя cancan (автор Райан Бейтс).
PagesController выглядит следующим образом
class PagesController < ApplicationController
def new
@page = Page.new
authorize! :update, @page
...
end
...
end
Это возвращает неинициализированную константу CanCan::Способность::I18n
Обратите внимание, что то же самое происходит, когда я использую
фильтр 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
Комментарии:
1. I18n относится к интернационализации (например, на разных языках). Используете ли вы Rails на языке, отличном от английского?
2. Чтобы лучше помочь вам в этом, вы также опубликуете свой
ability.rb
файл.3. @AlexPeattie Некоторые таблицы в базе данных MySQL используют тип сортировки latin1_swedish_ci, другие используют utf8_general_ci. Как вы думаете, это проблема? Спасибо
4. @janders223 Добавил код ability.rb. Спасибо
Ответ №1:
Вам необходимо установить драгоценный камень i18n. Надеюсь, после установки это должно сработать.