feat: add priorities to IP address assignment

This commit is contained in:
Adam Cooke
2021-07-28 14:18:40 +00:00
parent daf469ce7f
commit 21a8d89045
7 changed files with 52 additions and 7 deletions
+22
View File
@@ -9,6 +9,7 @@
# created_at :datetime
# updated_at :datetime
# hostname :string(255)
# priority :integer
#
class IPAddress < ApplicationRecord
@@ -18,5 +19,26 @@ class IPAddress < ApplicationRecord
validates :ipv4, :presence => true, :uniqueness => true
validates :hostname, :presence => true
validates :ipv6, :uniqueness => {:allow_blank => true}
validates :priority, numericality: { greater_than_or_equal_to: 0, less_than_or_equal_to: 100, only_integer: true }
scope :order_by_priority, -> { order(priority: :desc) }
before_validation :set_default_priority
private
def set_default_priority
return if priority.present?
self.priority = 100
end
class << self
def select_by_priority
order(Arel.sql("RAND() * priority DESC")).first
end
end
end