searchlogic 2.2.2 → 2.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
== 2.2.3 released 2009-07-31
|
2
|
+
|
3
|
+
* Fixed bug when an associations named scope joins is a string or an array of strings, the joins we add in automatically should also be a string, not a symbol.
|
4
|
+
|
1
5
|
== 2.2.2 released 2009-07-31
|
2
6
|
|
3
7
|
* Fix bug to give priority to local columns.
|
data/VERSION.yml
CHANGED
@@ -61,8 +61,7 @@ module Searchlogic
|
|
61
61
|
# The underlying condition doesn't require any parameters, so let's just create a simple
|
62
62
|
# named scope that is based on a hash.
|
63
63
|
options = scope.scope(:find)
|
64
|
-
options
|
65
|
-
options[:joins] = options[:joins].blank? ? association.name : {association.name => options[:joins]}
|
64
|
+
prepare_named_scope_options(options, association)
|
66
65
|
options
|
67
66
|
else
|
68
67
|
# The underlying condition requires parameters, let's match the parameters it requires
|
@@ -88,13 +87,22 @@ module Searchlogic
|
|
88
87
|
searchlogic_lambda(:#{arg_type}) { |#{proc_args.join(",")}|
|
89
88
|
scope = association.klass.send(association_condition, #{proc_args.join(",")})
|
90
89
|
options = scope ? scope.scope(:find) : {}
|
91
|
-
options
|
92
|
-
options[:joins] = options[:joins].blank? ? association.name : {association.name => options[:joins]}
|
90
|
+
prepare_named_scope_options(options, association)
|
93
91
|
options
|
94
92
|
}
|
95
93
|
end_eval
|
96
94
|
end
|
97
95
|
end
|
96
|
+
|
97
|
+
def prepare_named_scope_options(options, association)
|
98
|
+
options.delete(:readonly)
|
99
|
+
|
100
|
+
if options[:joins].is_a?(String) || array_of_strings?(options[:joins])
|
101
|
+
options[:joins] = [inner_joins(association.name), options[:joins]].flatten
|
102
|
+
else
|
103
|
+
options[:joins] = options[:joins].blank? ? association.name : {association.name => options[:joins]}
|
104
|
+
end
|
105
|
+
end
|
98
106
|
end
|
99
107
|
end
|
100
108
|
end
|
data/searchlogic.gemspec
CHANGED
@@ -125,4 +125,9 @@ describe "Association Conditions" do
|
|
125
125
|
order = user.orders.create(:total => 20, :taxes => 3)
|
126
126
|
Company.users_orders_taxes_lt(50).ascend_by_users_orders_total.all(:include => {:users => :orders}).should == Company.all
|
127
127
|
end
|
128
|
+
|
129
|
+
it "should automatically add string joins if the association condition is using strings" do
|
130
|
+
User.named_scope(:orders_big_id, :joins => User.inner_joins(:orders))
|
131
|
+
Company.users_orders_big_id.proxy_options.should == {:joins=>[" INNER JOIN \"users\" ON users.company_id = companies.id ", " INNER JOIN \"orders\" ON orders.user_id = users.id "]}
|
132
|
+
end
|
128
133
|
end
|