Files
docuseal/app/models/account.rb
T

66 lines
2.7 KiB
Ruby
Raw Normal View History

2023-05-21 17:59:36 +03:00
# frozen_string_literal: true
# == Schema Information
#
# Table name: accounts
#
2024-04-28 10:27:44 +03:00
# id :bigint not null, primary key
# archived_at :datetime
# locale :string not null
# name :string not null
# timezone :string not null
# uuid :string not null
# created_at :datetime not null
# updated_at :datetime not null
2023-05-21 17:59:36 +03:00
#
2024-04-05 19:55:35 +03:00
# Indexes
#
# index_accounts_on_uuid (uuid) UNIQUE
#
2023-05-21 17:59:36 +03:00
class Account < ApplicationRecord
2024-04-05 19:55:35 +03:00
attribute :uuid, :string, default: -> { SecureRandom.uuid }
2023-05-21 17:59:36 +03:00
has_many :users, dependent: :destroy
has_many :encrypted_configs, dependent: :destroy
2023-08-16 22:57:59 +03:00
has_many :account_configs, dependent: :destroy
2023-11-23 20:03:52 +02:00
has_many :email_messages, dependent: :destroy
2023-05-31 23:19:20 +03:00
has_many :templates, dependent: :destroy
2023-09-21 00:23:38 +03:00
has_many :template_folders, dependent: :destroy
2023-09-22 02:20:38 +03:00
has_one :default_template_folder, -> { where(name: TemplateFolder::DEFAULT_NAME) },
2023-09-21 00:23:38 +03:00
class_name: 'TemplateFolder', dependent: :destroy, inverse_of: :account
2024-02-27 13:29:18 +02:00
has_many :submissions, dependent: :destroy
2024-08-16 10:58:51 +03:00
has_many :submitters, dependent: :destroy
2024-01-20 23:53:14 +02:00
has_many :account_linked_accounts, dependent: :destroy
2024-06-04 11:48:02 +03:00
has_many :email_events, dependent: :destroy
2024-07-14 21:38:24 +03:00
has_many :webhook_urls, dependent: :destroy
2024-01-20 23:53:14 +02:00
has_many :account_testing_accounts, -> { testing }, dependent: :destroy,
class_name: 'AccountLinkedAccount',
inverse_of: :account
has_one :linked_account_account, dependent: :destroy,
foreign_key: :linked_account_id,
class_name: 'AccountLinkedAccount',
inverse_of: :linked_account
2024-02-15 09:40:57 +02:00
has_many :linked_account_accounts, dependent: :destroy,
foreign_key: :linked_account_id,
class_name: 'AccountLinkedAccount',
inverse_of: :linked_account
2024-01-20 23:53:14 +02:00
has_many :linked_accounts, through: :account_linked_accounts
has_many :testing_accounts, through: :account_testing_accounts, source: :linked_account
2023-05-21 17:59:36 +03:00
has_many :active_users, -> { active }, dependent: :destroy,
inverse_of: :account, class_name: 'User'
2023-06-30 01:26:13 +03:00
attribute :timezone, :string, default: 'UTC'
attribute :locale, :string, default: 'en-US'
2023-09-21 00:23:38 +03:00
2024-04-28 10:27:44 +03:00
scope :active, -> { where(archived_at: nil) }
2024-01-20 23:53:14 +02:00
def testing?
linked_account_account&.testing?
end
2023-09-22 02:20:38 +03:00
def default_template_folder
super || build_default_template_folder(name: TemplateFolder::DEFAULT_NAME,
author_id: users.minimum(:id)).tap(&:save!)
2023-09-21 00:23:38 +03:00
end
2023-05-21 17:59:36 +03:00
end