Sha256: 710c964a958aa72da0920580701f8b5aef29972279cb12b316b4ee9f28a23f21

Contents?: true

Size: 743 Bytes

Versions: 18

Compression:

Stored size: 743 Bytes

Contents

# Adds list of toggleable attributes to model
#
# @author Maxim Khan-Magomedov <maxim.km@gmail.com>
module Toggleable
  extend ActiveSupport::Concern

  included do
    class_attribute :toggleable_attributes, instance_predicate: false, instance_accessor: false

    # @param [String, Symbol] attribute
    # @return [Hash]
    def toggle_parameter(attribute)
      return unless self::toggleable_attributes.include? attribute.to_sym
      toggle! attribute
      { attribute => self[attribute] }
    end
  end

  module ClassMethods

    private

    # @param [Array<Symbol, String>] attributes
    def toggleable(*attributes)
      cattr_accessor :toggleable_attributes
      self.toggleable_attributes = attributes.flatten
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
biovision-base-0.39.190804.1 app/models/concerns/toggleable.rb
biovision-base-0.37.190607.0 app/models/concerns/toggleable.rb
biovision-base-0.36.190526.0 app/models/concerns/toggleable.rb
biovision-base-0.34.190331.1 app/models/concerns/toggleable.rb
biovision-base-0.22.180920.0 app/models/concerns/toggleable.rb
biovision-base-0.21.180812.0 app/models/concerns/toggleable.rb
biovision-base-0.20.180731.0 app/models/concerns/toggleable.rb
biovision-base-0.19.180703.1 app/models/concerns/toggleable.rb
biovision-base-0.17.180619 app/models/concerns/toggleable.rb
biovision-base-0.15.180502 app/models/concerns/toggleable.rb
biovision-base-0.15.180415 app/models/concerns/toggleable.rb
biovision-base-0.14.180326 app/models/concerns/toggleable.rb
biovision-base-0.11.180127 app/models/concerns/toggleable.rb
biovision-base-0.9.171227 app/models/concerns/toggleable.rb
biovision-base-0.8.171029 app/models/concerns/toggleable.rb
biovision-base-0.8.170916 app/models/concerns/toggleable.rb
biovision-base-0.7.170709 app/models/concerns/toggleable.rb
biovision-base-0.5.170614 app/models/concerns/toggleable.rb