File: repository_language.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (20 lines) | stat: -rw-r--r-- 686 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# frozen_string_literal: true

class RepositoryLanguage < ApplicationRecord
  extend SuppressCompositePrimaryKeyWarning

  belongs_to :project
  belongs_to :programming_language

  default_scope { includes(:programming_language) } # rubocop:disable Cop/DefaultScope

  scope :with_programming_language, ->(*names) do
    joins(:programming_language).merge(ProgrammingLanguage.with_name_case_insensitive(*names))
  end

  validates :project, presence: true
  validates :share, inclusion: { in: 0..100, message: "The share of a language is between 0 and 100" }
  validates :programming_language, uniqueness: { scope: :project_id }

  delegate :name, :color, to: :programming_language
end