Add model AccountRole
This commit is contained in:
parent
7f507c9a1e
commit
43b6e08e3f
6 changed files with 53 additions and 2 deletions
|
@ -1,9 +1,20 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Account < ApplicationRecord
|
||||
include Rolify::Role
|
||||
extend Rolify::Dynamic if Rolify.dynamic_shortcuts
|
||||
|
||||
USERNAME_RE = /\A[a-z][_a-z0-9]*[a-z0-9]\z/.freeze
|
||||
|
||||
rolify role_join_table_name: :account_roles
|
||||
self.role_cname = 'Role'
|
||||
self.role_table_name = 'roles'
|
||||
self.strict_rolify = false
|
||||
|
||||
self.adapter = Rolify::Adapter::Base.create 'role_adapter', role_cname, name
|
||||
|
||||
has_many :account_roles, dependent: :restrict_with_exception
|
||||
|
||||
has_many :roles, through: :account_roles
|
||||
|
||||
belongs_to :person, optional: true
|
||||
|
||||
|
|
6
app/models/account_role.rb
Normal file
6
app/models/account_role.rb
Normal file
|
@ -0,0 +1,6 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AccountRole < ApplicationRecord
|
||||
belongs_to :account
|
||||
belongs_to :role
|
||||
end
|
|
@ -5,7 +5,9 @@ class Role < ApplicationRecord
|
|||
superuser
|
||||
].map(&:freeze).freeze
|
||||
|
||||
has_and_belongs_to_many :accounts, join_table: :account_roles
|
||||
has_many :account_roles, dependent: :restrict_with_exception
|
||||
|
||||
has_many :accounts, through: :account_roles
|
||||
|
||||
belongs_to :resource, polymorphic: true, optional: true
|
||||
|
||||
|
|
8
spec/models/account_role_spec.rb
Normal file
8
spec/models/account_role_spec.rb
Normal file
|
@ -0,0 +1,8 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe AccountRole do
|
||||
it { is_expected.to belong_to :account }
|
||||
it { is_expected.to belong_to :role }
|
||||
end
|
|
@ -13,6 +13,18 @@ RSpec.describe Account do
|
|||
.dependent(:restrict_with_exception)
|
||||
end
|
||||
|
||||
it do
|
||||
is_expected.to \
|
||||
have_many(:account_roles)
|
||||
.dependent(:restrict_with_exception)
|
||||
end
|
||||
|
||||
it do
|
||||
is_expected.to \
|
||||
have_many(:roles)
|
||||
.through(:account_roles)
|
||||
end
|
||||
|
||||
it do
|
||||
is_expected.to \
|
||||
have_many(:account_telegram_contacts)
|
||||
|
|
|
@ -5,6 +5,18 @@ require 'rails_helper'
|
|||
RSpec.describe Role do
|
||||
subject { create :role }
|
||||
|
||||
it do
|
||||
is_expected.to \
|
||||
have_many(:account_roles)
|
||||
.dependent(:restrict_with_exception)
|
||||
end
|
||||
|
||||
it do
|
||||
is_expected.to \
|
||||
have_many(:accounts)
|
||||
.through(:account_roles)
|
||||
end
|
||||
|
||||
describe '#name' do
|
||||
def allow_value(*)
|
||||
super.for :name
|
||||
|
|
Reference in a new issue