summaryrefslogtreecommitdiff
path: root/lib/gitlab/database/read_only_relation.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/database/read_only_relation.rb')
-rw-r--r--lib/gitlab/database/read_only_relation.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/gitlab/database/read_only_relation.rb b/lib/gitlab/database/read_only_relation.rb
new file mode 100644
index 00000000000..4571ad122ce
--- /dev/null
+++ b/lib/gitlab/database/read_only_relation.rb
@@ -0,0 +1,16 @@
+module Gitlab
+ module Database
+ # Module that can be injected into a ActiveRecord::Relation to make it
+ # read-only.
+ module ReadOnlyRelation
+ [:delete, :delete_all, :update, :update_all].each do |method|
+ define_method(method) do |*args|
+ raise(
+ ActiveRecord::ReadOnlyRecord,
+ "This relation is marked as read-only"
+ )
+ end
+ end
+ end
+ end
+end