diff options
Diffstat (limited to 'app/models/error_tracking/error_tracking_setting.rb')
-rw-r--r-- | app/models/error_tracking/error_tracking_setting.rb | 12 |
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 |