pg_search 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f2c1314fe8a375215c28cab705710050ceffcef3
4
- data.tar.gz: 4055f33418dfca0cbb94259b0a3fb0befc53342c
3
+ metadata.gz: f0dac0584f13909a05901de21df0de7ccee6312b
4
+ data.tar.gz: 5eafba8855a040b9bfea3ea7df2a6e9fadb7bb02
5
5
  SHA512:
6
- metadata.gz: 7ce28204b8e03ecaf75d5d65d810f84d20a4104fd82a9eafed9e4abcc25849466861b86075fab54212c6974228f1a8b873ac2aa805e74d46c0f15d25d9040588
7
- data.tar.gz: de01412dbad07868ed1f71ad29bb992fcfa7b085e2cf9301e5c47c2afacbf16de7c6f602692c60e474a77bc15dd26b4405c9a2f59773262f75141cc749b338f0
6
+ metadata.gz: 4ff3d3978df858242d44590e1dfde3107c943e4496ce251b2d71663beb800b922a742d5c2dea65f017946630d34b63eef2c29b206514ce2debfabdb2a969d922
7
+ data.tar.gz: ebaea869e71b1c2239aaa8cb1d613623e6a41ce14628fc5afa96f210a0ee52dca39151ae0b156aca9fc6fe81cfc5dd9b75de561bd8d675bdbce01bae8463c8eb
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # pg_search changelog
2
2
 
3
+ ## 1.0.1
4
+
5
+ * Call `.unscoped` on relation used to build subquery, to eliminate unnecessary JOINs. (Markus Doits)
6
+
3
7
  ## 1.0.0
4
8
 
5
9
  * Support more `ActiveRecord::Relation` methods, such as `#pluck` and `#select` by moving search-related operations to subquery.
@@ -41,7 +41,7 @@ module PgSearch
41
41
 
42
42
  def subquery
43
43
  model
44
- .except(:select)
44
+ .unscoped
45
45
  .select("#{primary_key} AS pg_search_id")
46
46
  .select("#{rank} AS rank")
47
47
  .joins(subquery_join)
@@ -1,3 +1,3 @@
1
1
  module PgSearch
2
- VERSION = "1.0.0".freeze
2
+ VERSION = "1.0.1".freeze
3
3
  end
@@ -186,6 +186,68 @@ describe "an Active Record model which includes PgSearch" do
186
186
  end
187
187
  end
188
188
 
189
+ context "chained to a cross-table scope" do
190
+ with_model :House do
191
+ table do |t|
192
+ t.references :person
193
+ t.string :city
194
+ end
195
+
196
+ model do
197
+ belongs_to :person
198
+ end
199
+ end
200
+
201
+ with_model :Person do
202
+ table do |t|
203
+ t.string :name
204
+ end
205
+
206
+ model do
207
+ include PgSearch
208
+ has_many :houses
209
+ pg_search_scope :named, against: [:name]
210
+ scope :with_house_in_city, ->(city) {
211
+ joins(:houses).where(House.table_name.to_sym => {city: city})
212
+ }
213
+ end
214
+ end
215
+
216
+ it "works when the other scope is last" do
217
+ house_in_duluth = House.create!(city: "Duluth")
218
+ second_house_in_duluth = House.create!(city: "Duluth")
219
+ house_in_sheboygan = House.create!(city: "Sheboygan")
220
+
221
+ bob_in_duluth =
222
+ Person.create!(name: "Bob", houses: [house_in_duluth])
223
+ bob_in_sheboygan =
224
+ Person.create!(name: "Bob", houses: [house_in_sheboygan])
225
+ sally_in_duluth =
226
+ Person.create!(name: "Sally", houses: [second_house_in_duluth])
227
+
228
+ results = Person.named("bob").with_house_in_city("Duluth")
229
+ expect(results).to include bob_in_duluth
230
+ expect(results).not_to include [bob_in_sheboygan, sally_in_duluth]
231
+ end
232
+
233
+ it "works when the other scope is first" do
234
+ house_in_duluth = House.create!(city: "Duluth")
235
+ second_house_in_duluth = House.create!(city: "Duluth")
236
+ house_in_sheboygan = House.create!(city: "Sheboygan")
237
+
238
+ bob_in_duluth =
239
+ Person.create!(name: "Bob", houses: [house_in_duluth])
240
+ bob_in_sheboygan =
241
+ Person.create!(name: "Bob", houses: [house_in_sheboygan])
242
+ sally_in_duluth =
243
+ Person.create!(name: "Sally", houses: [second_house_in_duluth])
244
+
245
+ results = Person.with_house_in_city("Duluth").named("Bob")
246
+ expect(results).to include bob_in_duluth
247
+ expect(results).not_to include [bob_in_sheboygan, sally_in_duluth]
248
+ end
249
+ end
250
+
189
251
  it "returns an empty array when a blank query is passed in" do
190
252
  ModelWithPgSearch.create!(:content => 'foo')
191
253
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_search
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Grant Hutchins
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-04-19 00:00:00.000000000 Z
12
+ date: 2015-05-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord