24 lines
779 B
Ruby
24 lines
779 B
Ruby
# frozen_string_literal: true
|
|
|
|
class Workflow < ApplicationRecord
|
|
belongs_to :project
|
|
|
|
has_many :tasks, dependent: :restrict_with_exception
|
|
has_many :task_statuses, dependent: :restrict_with_error
|
|
accepts_nested_attributes_for :task_statuses, allow_destroy: true
|
|
belongs_to :default_status, class_name: 'TaskStatus', optional: true
|
|
|
|
enum :icon, { task: 'task', warning: 'warning' }, default: 'task', scopes: false
|
|
enum :color, { blue: 'blue', gray: 'gray', lime: 'lime', red: 'red', teal: 'teal' }, default: 'gray', scopes: false
|
|
|
|
validate :should_own_default_status
|
|
|
|
private
|
|
|
|
def should_own_default_status
|
|
return if default_status.nil?
|
|
|
|
errors.add(:default_status, 'Should own default status') unless default_status.id.in?(task_status_ids)
|
|
end
|
|
end
|