Sha256: 33787bec81e76612bfe7b9ea163b7c1f058c6025515ed9a9911a617648f6869c

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

module RestfulQuery
  module CanQuery

    def self.included(klass)
      klass.extend MacroMethods
    end

    module MacroMethods
      def can_query(options = {})
        @include       = options.delete(:include) || []
        @query_options = options
        @can_query     = true
        module_eval do
          def self.restful_query_parser(query_hash, options = {})
            RestfulQuery::Parser.new(query_hash, @query_options.merge(options))
          end

          scope_meth = self.respond_to?(:scope) ? :scope : :named_scope

          send(scope_meth, :restful_query, lambda {|query_hash|
            return {} if query_hash.blank? || query_hash.empty?
            parser = self.restful_query_parser(query_hash)
            query_hash = {}
            query_hash[:conditions] = parser.to_conditions_array if parser.has_conditions?
            query_hash[:include]    = @include if @include && !@include.empty?
            query_hash[:order]      = parser.sort_sql if parser.has_sort?
            logger.info 'Rest query:' + query_hash.inspect
            query_hash
          })
        end
      end

      def can_query?
        @can_query
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
restful_query-0.3.2 lib/restful_query/can_query.rb