Add method Role.make!
This commit is contained in:
parent
1893da6f31
commit
51945a65a5
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -18,6 +18,8 @@ RSpec.describe Role do
|
|||
.through(:account_roles)
|
||||
end
|
||||
|
||||
pending '.make!'
|
||||
|
||||
describe '#name' do
|
||||
def allow_value(*)
|
||||
super.for :name
|
||||
|
|
Reference in New Issue