Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2017-07-25 13:26:52 +0300
committerRémy Coutable <remy@rymai.me>2017-07-25 13:26:52 +0300
commit5dd856f061ff9d9fdfe939f7f27687c17a2928cb (patch)
treefc4e8f8c8f4f34eff851eeebda1f4f69655efc14 /app
parenta53cc4893c74d8a2a88801e2228c632c84fccf3d (diff)
parente13d75c38a09fca98dfbb52ef94119770b7a445a (diff)
Merge branch 'bvl-port-inverse-protected-ref-to-ce' into 'master'
Explicitly define inverse of acces_level relations See merge request !13068
Diffstat (limited to 'app')
-rw-r--r--app/models/concerns/protected_ref.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/app/models/concerns/protected_ref.rb b/app/models/concerns/protected_ref.rb
index fc6b840f7a8..5dd43c36222 100644
--- a/app/models/concerns/protected_ref.rb
+++ b/app/models/concerns/protected_ref.rb
@@ -17,7 +17,13 @@ module ProtectedRef
class_methods do
def protected_ref_access_levels(*types)
types.each do |type|
- has_many :"#{type}_access_levels", dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
+ # We need to set `inverse_of` to make sure the `belongs_to`-object is set
+ # when creating children using `accepts_nested_attributes_for`.
+ #
+ # If we don't `protected_branch` or `protected_tag` would be empty and
+ # `project` cannot be delegated to it, which in turn would cause validations
+ # to fail.
+ has_many :"#{type}_access_levels", dependent: :destroy, inverse_of: self.model_name.singular # rubocop:disable Cop/ActiveRecordDependent
validates :"#{type}_access_levels", length: { is: 1, message: "are restricted to a single instance per #{self.model_name.human}." }