scinote-web/app/models/project_folder.rb
2020-10-29 15:44:21 +01:00

27 lines
891 B
Ruby

# frozen_string_literal: true
class ProjectFolder < ApplicationRecord
include SearchableModel
include SearchableByNameModel
validates :name,
length: { minimum: Constants::NAME_MIN_LENGTH,
maximum: Constants::NAME_MAX_LENGTH },
uniqueness: { scope: :team_id, case_sensitive: false }
before_validation :inherit_team_from_parent_folder, if: -> { parent_folder.present? }
belongs_to :team, inverse_of: :project_folders, touch: true
belongs_to :parent_folder, class_name: 'ProjectFolder', optional: true
has_many :projects, inverse_of: :project_folder, dependent: :nullify
has_many :project_folders, foreign_key: 'parent_folder_id', inverse_of: :parent_folder, dependent: :destroy
scope :top_level, -> { where(parent_folder: nil) }
private
def inherit_team_from_parent_folder
self.team = parent_folder.team
end
end