32 lines
1 KiB
Ruby
32 lines
1 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Packages
|
||
|
module Debian
|
||
|
module Component
|
||
|
extend ActiveSupport::Concern
|
||
|
|
||
|
included do
|
||
|
belongs_to :distribution, class_name: "Packages::Debian::#{container_type.capitalize}Distribution", inverse_of: :components
|
||
|
# files must be destroyed by ruby code in order to properly remove carrierwave uploads
|
||
|
has_many :files,
|
||
|
class_name: "Packages::Debian::#{container_type.capitalize}ComponentFile",
|
||
|
foreign_key: :component_id,
|
||
|
inverse_of: :component,
|
||
|
dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
|
||
|
|
||
|
validates :distribution,
|
||
|
presence: true
|
||
|
|
||
|
validates :name,
|
||
|
presence: true,
|
||
|
length: { maximum: 255 },
|
||
|
uniqueness: { scope: %i[distribution_id] },
|
||
|
format: { with: Gitlab::Regex.debian_component_regex }
|
||
|
|
||
|
scope :with_distribution, ->(distribution) { where(distribution: distribution) }
|
||
|
scope :with_name, ->(name) { where(name: name) }
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|