binarylogic / searchlogic

Searchlogic provides object based searching, common named scopes, and other useful tools.
http://rdoc.info/projects/binarylogic/searchlogic
MIT License
1.39k stars 133 forks source link

Searchlogic::NamedScopes::OrConditions::UnknownConditionError raised when calling class method with "_or_" in its name on search object #82

Open jana4u opened 14 years ago

jana4u commented 14 years ago

Everything runs great when you change name of affected method to different name not including 'or'


How to get this error:

  1. create empty rails app (rails 2.3.5)
  2. add this line to config/environment.rb

    config.gem "searchlogic", :version => '~> 2.4.19'
  3. generate model

    ruby script/generate model car
  4. run

    rake db:migrate
  5. edit generated model - add class method including "or" in its name

    class Car < ActiveRecord::Base
       def self.abc_or_def
           all
       end
    end
  6. run rails console and try

    search = Car.search
    search.abc_or_def

my results:

Loading development environment (Rails 2.3.5)
>> search = Car.search
=> #<Searchlogic::Search:0x49e24ac @conditions={}, @klass=Car(id: integer, created_at: datetime, updated_at: datetime),
@current_scope=nil>
>> search.abc_or_def
Searchlogic::NamedScopes::OrConditions::UnknownConditionError: The condition 'def' is not a valid condition, we could not find any scopes that match this.
        from c:/ruby/lib/ruby/gems/1.8/gems/searchlogic-2.4.19/lib/searchlogic/named_scopes/or_conditions.rb:96:in `interpolate_or_conditions'
        from c:/ruby/lib/ruby/gems/1.8/gems/searchlogic-2.4.19/lib/searchlogic/named_scopes/or_conditions.rb:75:in `each'
        from c:/ruby/lib/ruby/gems/1.8/gems/searchlogic-2.4.19/lib/searchlogic/named_scopes/or_conditions.rb:75:in `interpolate_or_conditions'
        from c:/ruby/lib/ruby/gems/1.8/gems/searchlogic-2.4.19/lib/searchlogic/named_scopes/or_conditions.rb:36:in `or_conditions'
        from c:/ruby/lib/ruby/gems/1.8/gems/searchlogic-2.4.19/lib/searchlogic/named_scopes/or_conditions.rb:19:in `or_condition?'
        from c:/ruby/lib/ruby/gems/1.8/gems/searchlogic-2.4.19/lib/searchlogic/named_scopes/or_conditions.rb:10:in `condition?'
        from c:/ruby/lib/ruby/gems/1.8/gems/searchlogic-2.4.19/lib/searchlogic/search.rb:196:in `scope?'
        from c:/ruby/lib/ruby/gems/1.8/gems/searchlogic-2.4.19/lib/searchlogic/search.rb:127:in `method_missing'
        from (irb):2
>>