Я бы порекомендовал образец для подражания.В этом сценарии пользователь будет have_and_belong_to_many :roles
, а роль - have_and_belong_to_many :users
.Это создает взаимосвязь между ролями и пользователями.См. this RailsGuide для получения дополнительной информации об ассоциациях.
В своем файле CanCan able.rb вы можете сделать что-то вроде этого (я просто догадываюсь при вашей настройке):
can :manage, Brand do |brand|
user.has_role?("brand_manager") && user.brands.include?(brand)
end
В вашем файле user.rb полезно написать что-то вродеэто:
def has_role?(name)
role = Role.find_by_name(name)
(self.roles.include?(role)) ? (return true) : (return false)
end
Надеюсь, это поможет.