Sha256: ac3345fd06a39d6fa96705a1d7b91872c7214996f6fe9c097859fd7b7b5b6bb6

Contents?: true

Size: 1.26 KB

Versions: 22

Compression:

Stored size: 1.26 KB

Contents

module Cash
  module Query
    class PrimaryKey < Abstract
      def initialize(active_record, ids, options1, options2)
        super(active_record, options1, options2)
        @expects_array = ids.first.kind_of?(Array)
        @original_ids = ids
        @ids = ids.flatten.compact.uniq.collect do |object|
          object.respond_to?(:quoted_id) ? object.quoted_id : object.to_i
        end
      end

      def perform
        return [] if @expects_array && @ids.empty?
        raise ActiveRecord::RecordNotFound if @ids.empty?

        super(:conditions => { :id => @ids.first })
      end

      protected
      def deserialize_objects(objects)
        convert_to_active_record_collection(super(objects))
      end

      def cache_keys(attribute_value_pairs)
        @ids.collect { |id| "id/#{id}" }
      end

      def miss(missing_keys, options)
        find_from_keys(*missing_keys)
      end

      def uncacheable
        find_from_ids_without_cache(@original_ids, @options1)
      end

      private
      def convert_to_active_record_collection(objects)
        case objects.size
        when 0
          raise ActiveRecord::RecordNotFound
        when 1
          @expects_array ? objects : objects.first
        else
          objects
        end
      end
    end
  end
end

Version data entries

22 entries across 22 versions & 7 rubygems

Version Path
ngmoco-cache-money-0.2.24.2 lib/cash/query/primary_key.rb
sreeix-cache-money-0.4.4 lib/cash/query/primary_key.rb
sreeix-cache-money-0.4.3 lib/cash/query/primary_key.rb
sreeix-cache-money-0.4.2 lib/cash/query/primary_key.rb
sreeix-cache-money-0.4.1 lib/cash/query/primary_key.rb
viximo-cache-money-0.3.0 lib/cash/query/primary_key.rb
sreeix-cache-money-0.2.27 lib/cash/query/primary_key.rb
sreeix-cache-money-0.2.26 lib/cash/query/primary_key.rb
sreeix-cache-money-0.2.25 lib/cash/query/primary_key.rb
sreeix-cache-money-0.2.24.1 lib/cash/query/primary_key.rb
timchen-cache-money-0.2.25.1 lib/cash/query/primary_key.rb
ngmoco-cache-money-0.2.23 lib/cash/query/primary_key.rb
ngmoco-cache-money-0.2.22 lib/cash/query/primary_key.rb
ngmoco-cache-money-0.2.21 lib/cash/query/primary_key.rb
ngmoco-cache-money-0.2.20 lib/cash/query/primary_key.rb
ngmoco-cache-money-0.2.16 lib/cash/query/primary_key.rb
ngmoco-cache-money-0.2.15 lib/cash/query/primary_key.rb
ngmoco-cache-money-0.2.14 lib/cash/query/primary_key.rb
palidanx-cache-money-0.2.5 lib/cash/query/primary_key.rb
ngmoco-cache-money-0.2.13 lib/cash/query/primary_key.rb