mattbeedle/capsule_crm

View on GitHub
lib/capsule_crm/persistence/configuration.rb

Summary

Maintainability
A
0 mins
Test Coverage
module CapsuleCRM
  module Persistence
    module Configuration
      extend ActiveSupport::Concern

      def self.included(base)
        base.send :class_attribute, :connection_options

        klass_name = base.to_s.demodulize.downcase

        base.connection_options = OpenStruct.new(
          create: lambda { |object| "#{klass_name.pluralize}" },
          update: lambda { |object| "#{klass_name.singularize}/#{object.id}" },
          destroy: lambda { |object| "#{klass_name.singularize}/#{object.id}" }
        )
      end

      module ClassMethods
        def persistable_config
          yield(connection_options)
        end
      end
    end
  end
end