Sha256: 3f8776e473ee6f06195d10a5748aaa3b7715fb5a6f239694d74a292bbffea763

Contents?: true

Size: 673 Bytes

Versions: 1

Compression:

Stored size: 673 Bytes

Contents

module Concerns
  module Storable
    extend ActiveSupport::Concern

    included do
      has_many :stores, as: :storable, dependent: :destroy
      after_save { store.save }
    end

    def store
      @store_collection ||= Concerns::Storable::Collection.new(
        self, self.class.store_config
      )
    end

    def storable?
      true
    end

    module ClassMethods
      def storable_field(name, klass, default = nil)
        delegate name, to: :store
        delegate "#{name}=", to: :store
        store_config.add(name, klass, default)
      end

      def store_config
        @store_config ||= Concerns::Storable::Config.new
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
udongo-0.1.0 app/models/concerns/storable.rb