Files
astuto/app/models/tenant.rb
Riccardo Graziosi bea146e612 Add billing (#329)
2024-05-03 18:11:07 +02:00

39 lines
1.4 KiB
Ruby

class Tenant < ApplicationRecord
has_one :tenant_setting, dependent: :destroy
has_one :tenant_billing, dependent: :destroy
has_many :boards, dependent: :destroy
has_many :post_statuses, dependent: :destroy
has_many :posts, dependent: :destroy
has_many :users, dependent: :destroy
has_many :o_auths, dependent: :destroy
# used to enable/disable a default oauth for a specific tenant
has_many :tenant_default_o_auths, dependent: :destroy
# used to query all globally enabled default oauths that are also enabled by the specific tenant
has_many :default_o_auths, -> { where tenant_id: nil, is_enabled: true }, through: :tenant_default_o_auths, source: :o_auth
enum status: [:active, :pending, :blocked]
after_initialize :set_default_status, if: :new_record?
before_save :downcase_subdomain
validates :site_name, presence: true
validates :subdomain, presence: true, uniqueness: true
validates :locale, inclusion: { in: I18n.available_locales.map(&:to_s) }
validates :custom_domain, format: { with: /\A[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}\z/ }, uniqueness: true, allow_blank: true, allow_nil: true
accepts_nested_attributes_for :tenant_setting, update_only: true
def set_default_status
self.status ||= :pending
end
def downcase_subdomain
self.subdomain = self.subdomain.downcase
end
def owner
users.find_by(role: 'owner')
end
end