Sha256: 01ce33a7f399f95ba7f051224677e917d2c2cebf6c697ce9e3a11d036b1d398e

Contents?: true

Size: 773 Bytes

Versions: 11

Compression:

Stored size: 773 Bytes

Contents

module Plug
  class Feature < ApplicationRecord
    include AASM

    # Validations
    validates :name, presence: { message: 'Feature name is required' },
                     uniqueness: { message: 'Feature name must be unique', case_sensitive: false }
    validates :state, presence: { message: 'Feature state is required' }

    # Callbacks
    before_save { self.slug = name.parameterize }

    # Scopes
    scope :slug_and_name, ->(arg) { where('slug = ? OR name = ?', arg, arg) }

    # States
    aasm column: :state do
      state :enabled, initial: true
      state :disabled

      event :enable do
        transitions from: :disabled, to: :enabled
      end

      event :disable do
        transitions from: :enabled, to: :disabled
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
plug-0.1.14 app/models/plug/feature.rb
plug-0.1.12 app/models/plug/feature.rb
plug-0.1.11 app/models/plug/feature.rb
plug-0.1.9 app/models/plug/feature.rb
plug-0.1.8 app/models/plug/feature.rb
plug-0.1.7 app/models/plug/feature.rb
plug-0.1.6 app/models/plug/feature.rb
plug-0.1.5 app/models/plug/feature.rb
plug-0.1.3 app/models/plug/feature.rb
plug-0.1.2 app/models/plug/feature.rb
plug-0.1.1 app/models/plug/feature.rb