Sha256: 363a234aa227b2456a974ceedc899deae25b2e9cc0c78634c98f797f2a107a41

Contents?: true

Size: 857 Bytes

Versions: 4

Compression:

Stored size: 857 Bytes

Contents

# frozen_string_literal: true

module ActsAsVotable
  module Extenders
    module Votable
      ALLOWED_CACHEABLE_STRATEGIES = %i[update update_columns]

      def votable?
        false
      end

      def acts_as_votable(args = {})
        require "acts_as_votable/votable"
        include ActsAsVotable::Votable

        if args.key?(:cacheable_strategy) && !ALLOWED_CACHEABLE_STRATEGIES.include?(args[:cacheable_strategy])
          raise ArgumentError, args[:cacheable_strategy]
        end

        define_method :acts_as_votable_options do
          self.class.instance_variable_get("@acts_as_votable_options")
        end

        class_eval do
          @acts_as_votable_options = {
            cacheable_strategy: :update
          }.merge(args)

          def self.votable?
            true
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
acts_as_votable-0.13.2 lib/acts_as_votable/extenders/votable.rb
acts_as_votable-0.13.1 lib/acts_as_votable/extenders/votable.rb
acts_as_votable-0.13.0 lib/acts_as_votable/extenders/votable.rb
acts_as_votable-0.12.1 lib/acts_as_votable/extenders/votable.rb