Sha256: 666b8b07c6da61ad80e39c27da9e9f54554a2ffb6ec51facb0d2fcb82f30336c

Contents?: true

Size: 1.61 KB

Versions: 52

Compression:

Stored size: 1.61 KB

Contents

module Searchlogic
  module CoreExt
    # Contains extensions for the Object class that Searchlogic uses.
    module Object
      # Searchlogic needs to know the expected type of the condition value so that it can properly cast
      # the value in the Searchlogic::Search object. For example:
      #
      #   search = User.search(:id_gt => "1")
      #
      # You would expect this:
      #
      #   search.id_gt => 1
      #
      # Not this:
      #
      #   search.id_gt => "1"
      #
      # Parameter values from forms are ALWAYS strings, so we have to cast them. Just like ActiveRecord
      # does when you instantiate a new User object.
      #
      # The problem is that ruby has no variable types, so Searchlogic needs to know what type you are expecting
      # for your named scope. So instead of this:
      #
      #   named_scope :id_gt, lambda { |value| {:conditions => ["id > ?", value]} }
      #
      # You need to do this:
      #
      #   named_scope :id_gt, searchlogic_lambda(:integer) { |value| {:conditions => ["id > ?", value]} }
      #
      # If you are wanting a string, you don't have to do anything, because Searchlogic assumes you want a string.
      # If you want something else, you need to specify it as I did in the above example. Comments are appreciated
      # on this, if you know of a better solution please let me know. But this is the best I could come up with,
      # without being intrusive and altering default behavior.
      def searchlogic_lambda(type = :string, &block)
        proc = lambda(&block)
        proc.searchlogic_arg_type = type
        proc
      end
    end
  end
end

Version data entries

52 entries across 52 versions & 6 rubygems

Version Path
binarylogic-searchlogic-2.1.13 lib/searchlogic/core_ext/object.rb
binarylogic-searchlogic-2.2.0 lib/searchlogic/core_ext/object.rb
binarylogic-searchlogic-2.2.1 lib/searchlogic/core_ext/object.rb
binarylogic-searchlogic-2.2.2 lib/searchlogic/core_ext/object.rb
binarylogic-searchlogic-2.2.3 lib/searchlogic/core_ext/object.rb
binarylogic-searchlogic-2.3.0 lib/searchlogic/core_ext/object.rb
binarylogic-searchlogic-2.3.1 lib/searchlogic/core_ext/object.rb
binarylogic-searchlogic-2.3.2 lib/searchlogic/core_ext/object.rb
binarylogic-searchlogic-2.3.3 lib/searchlogic/core_ext/object.rb
binarylogic-searchlogic-2.3.4 lib/searchlogic/core_ext/object.rb
binarylogic-searchlogic-2.3.5 lib/searchlogic/core_ext/object.rb
joost-searchlogic-2.2.3.1 lib/searchlogic/core_ext/object.rb
kazjote-searchlogic-2.3.4 lib/searchlogic/core_ext/object.rb
searchlogic-donotuse-2.3.9 lib/searchlogic/core_ext/object.rb
searchlogic-2.4.12 lib/searchlogic/core_ext/object.rb
searchlogic-2.4.11 lib/searchlogic/core_ext/object.rb
lazy-searchlogic-2.4.10 lib/searchlogic/core_ext/object.rb
searchlogic-2.4.10 lib/searchlogic/core_ext/object.rb
searchlogic-2.4.9 lib/searchlogic/core_ext/object.rb
searchlogic-2.4.8 lib/searchlogic/core_ext/object.rb