diff options
Diffstat (limited to 'app/models/ml/model.rb')
-rw-r--r-- | app/models/ml/model.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/app/models/ml/model.rb b/app/models/ml/model.rb new file mode 100644 index 00000000000..684b8e1983b --- /dev/null +++ b/app/models/ml/model.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +module Ml + class Model < ApplicationRecord + validates :project, :default_experiment, presence: true + validates :name, + format: Gitlab::Regex.ml_model_name_regex, + uniqueness: { scope: :project }, + presence: true, + length: { maximum: 255 } + + validate :valid_default_experiment? + + has_one :default_experiment, class_name: 'Ml::Experiment' + belongs_to :project + has_many :versions, class_name: 'Ml::ModelVersion' + + def valid_default_experiment? + return unless default_experiment + + errors.add(:default_experiment) unless default_experiment.name == name + errors.add(:default_experiment) unless default_experiment.project_id == project_id + end + end +end |