summaryrefslogtreecommitdiff
path: root/app/models/error_tracking/error_tracking_setting.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/error_tracking/error_tracking_setting.rb')
-rw-r--r--app/models/error_tracking/error_tracking_setting.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/app/models/error_tracking/error_tracking_setting.rb b/app/models/error_tracking/error_tracking_setting.rb
index ad9df40f74d..c8ff3173227 100644
--- a/app/models/error_tracking/error_tracking_setting.rb
+++ b/app/models/error_tracking/error_tracking_setting.rb
@@ -4,11 +4,23 @@ module ErrorTracking
class ErrorTrackingSetting < ActiveRecord::Base
belongs_to :project
+ validates :uri, length: { maximum: 255 }, public_url: true
+ validates :token, presence: true
+
attr_encrypted :token,
mode: :per_attribute_iv,
key: Settings.attr_encrypted_db_key_base_truncated,
algorithm: 'aes-256-gcm'
+ def self.create_or_update(project, params)
+ self.transaction(requires_new: true) do
+ setting = self.for_project(project)
+ setting.update!(params)
+ end
+ rescue ActiveRecord::RecordNotUnique
+ retry
+ end
+
def self.for_project(project)
self.where(project: project).first_or_initialize
end