1
0
Fork 0

Add method Role.make!

This commit is contained in:
Alex Kotov 2019-02-08 12:32:33 +05:00
parent 1893da6f31
commit 51945a65a5
Signed by: kotovalexarian
GPG Key ID: 553C0EBBEB5D5F08
3 changed files with 19 additions and 12 deletions

View File

@ -64,18 +64,10 @@ class Account < ApplicationRecord
def add_role(role_name, resource = nil)
raise 'can not add role to guest account' if guest?
resource_type =
resource.is_a?(Class) ? resource.to_s : resource&.class&.name
resource_id = resource&.id unless resource.is_a? Class
role = self.class.role_class.where(
name: role_name,
resource_type: resource_type,
resource_id: resource_id,
).first_or_create!
add_role_record role, resource
add_role_record(
self.class.role_class.make!(role_name, resource),
resource,
)
end
def remove_role(role_name, resource = nil)

View File

@ -24,6 +24,19 @@ class Role < ApplicationRecord
scopify
def self.make!(role_name, resource = nil)
resource_type =
resource.is_a?(Class) ? resource.to_s : resource&.class&.name
resource_id = resource&.id unless resource.is_a? Class
find_or_create_by!(
name: role_name,
resource_type: resource_type,
resource_id: resource_id,
)
end
def human_name
I18n.translate name, scope: :roles
end

View File

@ -18,6 +18,8 @@ RSpec.describe Role do
.through(:account_roles)
end
pending '.make!'
describe '#name' do
def allow_value(*)
super.for :name