Поиск:

Ответ в темуСоздание новой темы Создание опроса
> настройка cancan 
:(
    Опции темы
AndreyDr
Дата 22.3.2011, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 22.9.2010

Репутация: нет
Всего: нет



Здравствуйте, сел разбираться с cancan для организации распределения ролей пользователей и приложении.
создал две таблицы users и roles, связаны они следующим образом:
role.rb => has_many :users
user.rb => belongs_to :role
в ability.rb следующее
Код

class Ability
  include CanCan::Ability
  
  def initialize(user)
    user ||= User.new # guest user

    if user.role? :admin
      can :manage, :all
    elsif user.role? :operator
      can :manage, Post
    else 
      can :read, :all
    end
  end
end

но вот не могу понять как определить метод role? в user.rb
Если кто уже пользовался этим плагином, поделитесь опытом пожалуйста!
PM MAIL ICQ   Вверх
DeTeam
Дата 22.3.2011, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 29.10.2009
Где: Россия, Москва

Репутация: нет
Всего: нет



ну по контексту нужно прописать в  модели User
что-то вроде


Код

def role?(role_name)
  role.name.to_sym == role_name
end

PM MAIL WWW ICQ Jabber   Вверх
AndreyDr
Дата 22.3.2011, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 22.9.2010

Репутация: нет
Всего: нет



В ответ получаю
Код

undefined method `name' for nil:NilClass


PM MAIL ICQ   Вверх
DeTeam
Дата 23.3.2011, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 29.10.2009
Где: Россия, Москва

Репутация: нет
Всего: нет



Предполагалось, что вы вместо name подставите поле которое отвечает за название роли smile
PM MAIL WWW ICQ Jabber   Вверх
AndreyDr
Дата 23.3.2011, 06:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 22.9.2010

Репутация: нет
Всего: нет



это я понял )) так дело в том что в таблице Roles поле name и отвечает  за название роли =)
========================
На свежую голову утром думается легче, вроде решил свой вопрос следующим образом:
Код

def role?(role_name)
     self.role_id == Role.find_by_name(role_name).id
end

буду проверять =) 

Это сообщение отредактировал(а) AndreyDr - 23.3.2011, 06:39
PM MAIL ICQ   Вверх
solenko
Дата 23.3.2011, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 1
Всего: 67



undefined method `name' for nil:NilClass
логично для пользователя без роли
Код

def role?(role_name)
  role.nil? || role.name.to_sym == role_name
end



--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
DeTeam
Дата 23.3.2011, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 29.10.2009
Где: Россия, Москва

Репутация: нет
Всего: нет



Код

!role.nil? && role.name.to_sym == role_name

PM MAIL WWW ICQ Jabber   Вверх
source777
Дата 24.3.2011, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 12
Всего: 56



Цитата(DeTeam @  23.3.2011,  21:00 Найти цитируемый пост)
    
!role.nil? && role.name.to_sym == role_name

тогда уж просто
Код

role && role.name.to_sym == role_name



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.0757 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.