Добрый день!
Подскажите как правильно определять права пользователя.
Пишу приложение для документооборота между компаниями, у пользователя может быть много компаний, у компании может быть много пользователей, у пользователя есть права администрировать организацию, отправлять документы, создавать документы. Сделал все следующим образом из гемов выбрал Devise, Cancancan, rolify
Class User < ActiveRecord::Base
rolify strict: true
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :companies, through: :users_companies
has_many :users_companies
has_and_belongs_to_many :roles, :join_table => :users_roles
end
class Role < ActiveRecord::Base
resourcify
has_and_belongs_to_many :users, :join_table => :users_roles
belongs_to :resource, :polymorphic => true
scopify
end
class Company < ActiveRecord::Base
resourcify
devise :database_authenticatable, :registerable
has_many :users_companies
has_many :users, through: :users_companies
end
с добавлением прав пользователю вроде все понятно добавлять права User.add_role(:admin, current_company), добавляет роль с указанием к какой именно компании принадлежит эта роль, но с ability не знаю как определять к то ли компании принадлежит юзер
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # in case of guest
if user.has_role? :super_admin
can :manage, :all
else
can :read, :all
end
if user.has_role? :admin
can :manage, Company # не знаю как тут проверять есть ли у пользователя роль в этой компании и какая логика у проверки? что он делает и каким образом не понятно
end
end
end
Подскажите что делать?