Files
subtle-storm/app/models/task.rb
T
2025-07-12 17:50:56 +03:00

29 lines
665 B
Ruby

# frozen_string_literal: true
class Task < ApplicationRecord
belongs_to :project
validates :number, :title, presence: true
validates :number, numericality: { greater_than: 0 }
has_rich_text :description
def to_param
return full_number if association(:project).loaded?
super
end
def full_number
"#{project.code.upcase}-#{number}"
end
def self.find_by_full_number_or_id!(number_or_id)
return find!(number_or_id) if number_or_id.is_a?(Numeric) || number_or_id =~ /\A\d+\z/
project_code, number = number_or_id.split('-')
project = Project.find_by!(code: project_code.downcase)
find_by!(project:, number:)
end
end