Sha256: 90b3ae830b172f4e1c3c5155866b3c68104951423074b94461f0c91bc266e800
Contents?: true
Size: 1.5 KB
Versions: 1
Compression:
Stored size: 1.5 KB
Contents
# frozen_string_literal: true module ActiveWebhook module Models module TopicAdditions extend ActiveSupport::Concern included do self.table_name = "active_webhook_topics" scope :enabled, -> { where(disabled_at: nil) } scope :with_key, lambda { |key:, version: nil| scope = where(key: key) scope = scope.where(version: version) if version.present? scope } def self.last_with_key(key) where(key: key).order(id: :desc).first end before_validation :set_valid_version validates :key, presence: true validates :version, presence: true, uniqueness: { scope: :key } end def disable(reason = nil) self.disabled_at = Time.current self.disabled_reason = reason end def disable!(reason = nil) disable reason save! end def enable self.disabled_at = nil self.disabled_reason = nil end def enable! enable save! end def disabled? !enabled? end def enabled? disabled_at.nil? end protected def set_valid_version return if version.present? last_with_key = self.class.last_with_key key versions = last_with_key&.version.to_s.split(".") versions = [0] if versions.empty? version = versions.pop versions << version.to_i + 1 self.version = versions.join(".") end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
active_webhook-1.0.0 | lib/active_webhook/models/topic_additions.rb |