record_collection 0.10.2 → 0.10.3

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: fcab48b2d629719112ad1018b7db7ae7af101fdc
4
- data.tar.gz: 08acdff4c80ebd73341af33e17906a50ed9fff6c
3
+ metadata.gz: e447d692e69db528f32f29de1a0532b893b1e686
4
+ data.tar.gz: 06d7b54baeff7b9787328dcebe3e21b4c0e40d81
5
5
  SHA512:
6
- metadata.gz: 56ca6b536b3dd12d31e34f1f647815180e871e9a1890e1c67d1c7b4d186378ee060d29a0d445adcaa14ca8c4ae77609abeeba8f62a3d79b2993e8d865c0b3ba6
7
- data.tar.gz: a90ba75c5683a66f1294ad818df6485091df90a45fe8658d02aa9e470177b0d7b2ab9e8402337c2713b92bb58fb2689a57973bf47d5c4952554ae2cafbab1bf0
6
+ metadata.gz: de192342a3af0d2b7688b84ce772d073a211aca22577a4c02ff3ba2294c0bd167cd42936407b53ceb87fc04ca632074a688636c1bf4184d3dbfae299138174e1
7
+ data.tar.gz: 9b91e33a7a272c081dc69a0c0bd6a1bb7f3395c12e47f862db563d3792facdea73d84d6307ec2d4b1b97edf1e7cba4f31ac88587722a242159842d66dd042373
data/CHANGELOG.md CHANGED
@@ -1,6 +1,28 @@
1
1
  CHANGELOG
2
2
  =========
3
3
 
4
+ 2015-12-26 - v0.10.3
5
+ --------------------
6
+ ### Added
7
+ #### Add includes option for initializing a collection
8
+ ```
9
+ employees = Employee::Collection.includes(:project).where(state: 'active')
10
+ employee.map(&:project) #=> one query
11
+ ```
12
+
13
+ ####
14
+ Add `#refine_relation` option to refine the collection by means of a
15
+ scope or include
16
+ ```
17
+ class Employee
18
+ def self.with_project
19
+ includes(:project)
20
+ end
21
+ end
22
+ employees = Employee::Collection.where(state: 'active')
23
+ employees.refine_relation{ with_project } #=> collection object with refined ActiveRecord relation object if it is instantiated as such
24
+ ```
25
+
4
26
  2015-12-26 - v0.10.2
5
27
  --------------------
6
28
  ### Added
@@ -73,6 +73,11 @@ module RecordCollection
73
73
  self.new(record_class.joins(*args))
74
74
  end
75
75
 
76
+ # Create a new collection with the scope set to the result of the query on the record_class
77
+ def includes(*args)
78
+ self.new(record_class.includes(*args))
79
+ end
80
+
76
81
  def all(*args)
77
82
  self.new(record_class.all(*args))
78
83
  end
@@ -188,12 +193,31 @@ module RecordCollection
188
193
  self.class.model_name
189
194
  end
190
195
 
196
+ def refine_relation(&blk)
197
+ return self unless defined?(ActiveRecord::Relation)
198
+ return self unless @collection.is_a?(ActiveRecord::Relation)
199
+ @collection = @collection.instance_eval(&blk)
200
+ self
201
+ end
202
+
191
203
  # update existing scope with new one having applied where clause if possible
192
204
  def where(*args)
193
205
  @collection = @collection.where(*args)
194
206
  self
195
207
  end
196
208
 
209
+ # update existing scope with new one having applied joins clause if possible
210
+ def joins(*args)
211
+ @collection = @collection.joins(*args)
212
+ self
213
+ end
214
+
215
+ # update existing scope with new one having applied includes clause if possible
216
+ def includes(*args)
217
+ @collection = @collection.includes(*args)
218
+ self
219
+ end
220
+
197
221
  # update existing scope with new one having applied not clause if possible
198
222
  def not(*args)
199
223
  @collection = @collection.not(*args)
@@ -1,3 +1,3 @@
1
1
  module RecordCollection
2
- VERSION = "0.10.2"
2
+ VERSION = "0.10.3"
3
3
  end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe RecordCollection::Base do
4
+ describe '#refine_relation' do
5
+ it "does not blow up when array and not ActiveRecord::Relation is given" do
6
+ expect{ described_class.new([]).refine_relation }.not_to raise_error
7
+ described_class.new([]).refine_relation{ }.should be_a described_class
8
+ end
9
+ end
10
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: record_collection
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.2
4
+ version: 0.10.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin ter Kuile
@@ -434,6 +434,7 @@ files:
434
434
  - spec/base/behaviour_spec.rb
435
435
  - spec/base/finding_records_spec.rb
436
436
  - spec/base/inheritance_spec.rb
437
+ - spec/base/refine_relation_spec.rb
437
438
  - spec/base/validations_spec.rb
438
439
  - spec/dummy/README.rdoc
439
440
  - spec/dummy/Rakefile
@@ -559,6 +560,7 @@ test_files:
559
560
  - spec/base/behaviour_spec.rb
560
561
  - spec/base/finding_records_spec.rb
561
562
  - spec/base/inheritance_spec.rb
563
+ - spec/base/refine_relation_spec.rb
562
564
  - spec/base/validations_spec.rb
563
565
  - spec/dummy/README.rdoc
564
566
  - spec/dummy/Rakefile