Skip to content

Commit

Permalink
Fix issue 23
Browse files Browse the repository at this point in the history
  • Loading branch information
binarylogic committed Apr 7, 2011
1 parent ef17d40 commit a7a2f09
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 14 deletions.
2 changes: 1 addition & 1 deletion lib/searchlogic/named_scopes/alias_scope.rb
Expand Up @@ -33,7 +33,7 @@ module AliasScope
# is a safe method.
def alias_scope(name, options = nil)
alias_scopes[name.to_sym] = options
(class << self; self end).instance_eval do
(class << self; self; end).instance_eval do
define_method name do |*args|
case options
when Symbol
Expand Down
26 changes: 13 additions & 13 deletions lib/searchlogic/named_scopes/or_conditions.rb
Expand Up @@ -101,20 +101,20 @@ def interpolate_or_conditions(parts)
end

def full_association_path(part, last_condition, given_assoc)
path = [given_assoc.name]
part.sub!(/^#{given_assoc.name}_/, "")
klass = self
while klass = klass.send(:reflect_on_association, given_assoc.name)
klass = klass.klass
if details = klass.send(:association_condition_details, part, last_condition)
path << details[:association]
part = details[:condition]
given_assoc = details[:association]
elsif details = klass.send(:condition_details, part)
return { :path => path, :column => details[:column], :condition => details[:condition] }
end
path = [given_assoc.name]
part.sub!(/^#{given_assoc.name}_/, "")
klass = self
while klass = klass.send(:reflect_on_association, given_assoc.name)
klass = klass.klass
if details = klass.send(:association_condition_details, part, last_condition)
path << details[:association].name
part = details[:condition]
given_assoc = details[:association]
elsif details = klass.send(:condition_details, part)
return { :path => path, :column => details[:column], :condition => details[:condition] }
end
{ :path => path, :column => part, :condition => last_condition }
end
{:path => path, :column => part, :condition => last_condition}
end

def create_or_condition(scopes)
Expand Down
1 change: 1 addition & 0 deletions spec/searchlogic/named_scopes/or_conditions_spec.rb
Expand Up @@ -44,6 +44,7 @@
User.name_or_company_name_like("ben").proxy_options.should == {:joins => :company, :conditions => "(users.name LIKE '%ben%') OR (companies.name LIKE '%ben%')"}
User.company_name_or_name_like("ben").proxy_options.should == {:joins => :company, :conditions => "(companies.name LIKE '%ben%') OR (users.name LIKE '%ben%')"}
User.company_name_or_company_description_like("ben").proxy_options.should == {:joins =>[:company], :conditions => "(companies.name LIKE '%ben%') OR (companies.description LIKE '%ben%')"}
Cart.user_company_name_or_user_company_name_like("ben").proxy_options.should == {:joins => {:user=>:company}, :conditions => "(companies.name LIKE '%ben%') OR (companies.name LIKE '%ben%')"}
end

it "should not get confused by the 'or' in find_or_create_by_* methods" do
Expand Down

0 comments on commit a7a2f09

Please sign in to comment.