Browse Source

Maintenance: Add missing uniqueness validators on Rails level.

Martin Gruner 1 year ago
parent
commit
721f7b2173

+ 2 - 2
app/models/application_model/can_creates_and_updates.rb

@@ -21,7 +21,7 @@ returns
     def create_if_not_exists(data)
       identifier = [:id, :name, :login, :email, %i[source locale]].map { |a| data.slice(*a) }.find(&:any?) || {}
 
-      case_sensitive_find_by(**identifier) || create(data)
+      case_sensitive_find_by(**identifier) || create!(data)
     end
 
 =begin
@@ -42,7 +42,7 @@ returns
       raise ArgumentError, __('One of the required parameters must be provided, but none was found.') if attr.nil?
 
       record = case_sensitive_find_by(**data.slice(attr))
-      record.nil? ? create(data) : record.tap { |r| r.update(data) }
+      record.nil? ? create!(data) : record.tap { |r| r.update!(data) }
     end
 
 =begin

+ 1 - 0
app/models/calendar.rb

@@ -8,6 +8,7 @@ class Calendar < ApplicationModel
   store :business_hours
   store :public_holidays
 
+  validates :name, uniqueness: { case_sensitive: false }
   validate :validate_hours
 
   before_save :ensure_public_holidays_details, :fetch_ical

+ 1 - 1
app/models/chat.rb

@@ -5,7 +5,7 @@ class Chat < ApplicationModel
 
   has_many :sessions, dependent: :destroy
 
-  validates :name, presence: true
+  validates :name, presence: true, uniqueness: { case_sensitive: false }
   store     :preferences
 
   validates :note, length: { maximum: 250 }

+ 1 - 1
app/models/core_workflow.rb

@@ -17,7 +17,7 @@ class CoreWorkflow < ApplicationModel
   store :condition_selected
   store :perform
 
-  validates :name, presence: true
+  validates :name, presence: true, uniqueness: { case_sensitive: false }
 
   def self.classes
     Models.all.keys.select { |m| m.included_modules.include?(ChecksCoreWorkflow) }

+ 1 - 1
app/models/email_address.rb

@@ -7,7 +7,7 @@ class EmailAddress < ApplicationModel
   has_many        :groups, after_add: :cache_update, after_remove: :cache_update
   belongs_to      :channel, optional: true
   validates       :name,    presence: true
-  validates       :email,   presence: true
+  validates       :email,   presence: true, uniqueness: { case_sensitive: true }
 
   before_validation :check_email
   before_create   :check_if_channel_exists_set_inactive

+ 1 - 0
app/models/group.rb

@@ -31,6 +31,7 @@ class Group < ApplicationModel
   before_save :update_path
   after_save :update_path_children
 
+  validates :name, uniqueness: { case_sensitive: false }
   validates :name_last, presence: true, format: { without: %r{::}, message: __('No double colons (::) allowed, reserved delimiter') }
   validates :note, length: { maximum: 250 }
   sanitized_html :note, no_images: true

+ 1 - 1
app/models/job.rb

@@ -12,7 +12,7 @@ class Job < ApplicationModel
 
   store     :condition
   store     :perform
-  validates :name,    presence: true
+  validates :name,    presence: true, uniqueness: { case_sensitive: false }
   validates :object,  presence: true, inclusion: { in: %w[Ticket User Organization] }
   validates :perform, 'validations/verify_perform_rules': true
 

+ 1 - 1
app/models/macro.rb

@@ -8,7 +8,7 @@ class Macro < ApplicationModel
 
   store     :perform
   validates :perform,         'validations/verify_perform_rules': true
-  validates :name,            presence: true
+  validates :name,            presence: true, uniqueness: { case_sensitive: false }
   validates :ux_flow_next_up, inclusion: { in: %w[none next_task next_task_on_close next_from_overview] }
 
   has_and_belongs_to_many :groups, after_add: :cache_update, after_remove: :cache_update, class_name: 'Group'

+ 1 - 1
app/models/organization.rb

@@ -38,7 +38,7 @@ class Organization < ApplicationModel
   core_workflow_screens 'create', 'edit'
   core_workflow_admin_screens 'create', 'edit'
 
-  validates :name,   presence: true
+  validates :name,   presence: true, uniqueness: { case_sensitive: false }
   validates :domain, presence: { message: 'required when Domain Based Assignment is enabled' }, if: :domain_assignment
 
   # secondary_members will break eager_load of attributes_with_association_ids because it mixes up with the members relation.

+ 1 - 1
app/models/role.rb

@@ -18,7 +18,7 @@ class Role < ApplicationModel
                           after_add:     %i[cache_update cache_add_kb_permission],
                           before_remove: :last_admin_check_by_permission,
                           after_remove:  %i[cache_update cache_remove_kb_permission]
-  validates               :name, presence: true
+  validates               :name, presence: true, uniqueness: { case_sensitive: false }
   store                   :preferences
   has_many                :knowledge_base_permissions, class_name: 'KnowledgeBase::Permission', dependent: :destroy
 

Some files were not shown because too many files changed in this diff