Я использую Rails 4, devise, Role Model и CanCanCan.Rails - CanCanCan - общие возможности
Возможно ли определить способность в способности. Rb, что является общим для ряда ролей?
Например, каждый зарегистрированный пользователь может CRUD создать собственную страницу своего профиля? И тогда роли обладают определенными способностями поверх этой общей способности?
Как это работает? Нужно ли мне создавать роль в модели ролей для общих способностей, а затем разрешать каждому пользователю иметь несколько ролей, чтобы они получали общие способности, а также специфические роли?
К примеру, в моем ability.rb, у меня есть:
class Ability
include CanCan::Ability
def initialize(user)
alias_action :create, :read, :update, :destroy, :to => :crud
# Define abilities for the passed in user here. For example:
#
user ||= User.new # guest user (not logged in)
#users who are not signed in can create registration or login
# can read publicly available projects, programs and proposals
can :read, Project, {:active => true, :closed => false, :sweep => { :disclosure => { :allusers => true } } }
# {:active => true, :closed => false && :Project.sweep.disclosure.allusers => true}
# if user role is student
if user_signed_in?
can :crud, Profile, :user_id => user.id #[for themselves]
elsif user.try(:profile).present? && user.profile.has_role?(:student)
Итак, я хочу, чтобы студенты, чтобы иметь возможность читать одни и те же вещи, что гости могут читать. Есть ли способ сказать, что учащиеся могут делать все, что могут сделать новые пользователи и пользователи, которые вошли в систему (а также особые способности учащегося)?
Привет, Рокибул, боюсь, я не понимаю, что означает ваш пример. Вы имеете в виду, что для общих способностей мне нужно указать все роли, которые могут иметь возможность, в отличие от определения способности и включения этой способности в другую роль, которая также может использовать эту способность. Я также боюсь, что не понимаю, почему у меня нет способностей в profile.rb. Это намеренно, так как у 1 пользователя может быть много профилей. Извините, но я не понимаю ответа, который вы поделили. – Mel
Прошу прощения за то, что вы не можете понять пример кода. Но одна вещь, я не заставил вас указывать, что у вас есть несколько профилей для одного пользователя для нескольких ролей, вы можете назначить несколько ролей для одного пользователя напрямую, а не через профиль, это будет беспорядок, я думаю, во всяком случае удачи :) –