pg_search 1.0.0 → 1.0.1

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.
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