active_record_bulk_insert 1.2.0 → 1.3.0
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 +8 -8
- data/README.md +12 -0
- data/lib/active_record_bulk_insert.rb +3 -2
- data/spec/sample_record_spec.rb +19 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YTY2YmY2OTZkYWEzODRlOWFmZGFlZDkxZjZmYWFmNDk1Yjk3YTZiZg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NzJjZDAyYmYwYTNlMmUyYTAzMTkwYjRjNWU2ZThkMmE3ZGE2NjBhZQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZTQ5ZDdkNzI5ZTJiMmJjNWMzZDMzMDU5YjY5MGJlM2Q3MDBlOGRlMzcwYjE3
|
10
|
+
YWM5NzBiY2Y0ZDA0NWNmNDE5MWFkZTc5Y2RlNjhhOTA2MWUxYTliY2U4YmQw
|
11
|
+
YTI0ZTQxNTlkNGMxYmE2NzI2NTQ1YTUzMWNkMTdkYjkwYTM3NWI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZTJhZDQ3M2U0ZWNhNmYwZmQyNWQzNmE0Y2Q1MzJjNTA5MDY4NTRmNjJmMTAw
|
14
|
+
YzM3NWEzNDY5NjQ1NDQ4NmFmMjAwNDMwYjllYmQ4NTA5ZTMwMzFjMzg5NTY0
|
15
|
+
YjU4MGI4NGQyYzExMGJjNDQ4OTgxODQzNWZmMTVmMDdmNzAxZmI=
|
data/README.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
[](http://badge.fury.io/rb/active_record_bulk_insert)
|
2
|
+
[](https://rubygems.org/gems/active_record_bulk_insert)
|
2
3
|
[](https://travis-ci.org/bjhaid/active_record_bulk_insert)
|
3
4
|
|
4
5
|
# BULK INSERT
|
@@ -50,6 +51,17 @@ User.bulk_insert(users, :validate => true)
|
|
50
51
|
```
|
51
52
|
*The return value is a list of invalid records*
|
52
53
|
|
54
|
+
### Validate with a custom validator
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
users = [{:username => "foo", :firstname => "Foo", :lastname => "Bar", :age => 31},
|
58
|
+
{:username => "j.doe", :firstname => "John", :lastname => "Doe", :age => 57},
|
59
|
+
{:firstname => "John", :lastname => "Doe", :age => 57}]
|
60
|
+
User.bulk_insert(users, :validate_with => Proc.new { |user| !user[:username].blank? })
|
61
|
+
# => [{:firstname => "John", :lastname => "Doe", :age => 57}]
|
62
|
+
```
|
63
|
+
*The return value is a list of invalid records*
|
64
|
+
|
53
65
|
### Provide your own primary keys
|
54
66
|
|
55
67
|
```ruby
|
@@ -18,8 +18,9 @@ ActiveRecord::Base.class_eval do
|
|
18
18
|
attributes = _resolve_record(attrs.first, options).keys.join(", ")
|
19
19
|
|
20
20
|
invalid = []
|
21
|
-
if options.fetch(:validate, false)
|
22
|
-
|
21
|
+
if options.fetch(:validate, false) || options.fetch(:validate_with, false)
|
22
|
+
_validator = options.fetch(:validate_with, self.method(:_validate))
|
23
|
+
attrs, invalid = attrs.partition { |record| _validator.call(record) }
|
23
24
|
end
|
24
25
|
|
25
26
|
values_sql = attrs.map do |record|
|
data/spec/sample_record_spec.rb
CHANGED
@@ -89,6 +89,25 @@ describe SampleRecord do
|
|
89
89
|
invalid_records = SampleRecord.bulk_insert(records, :validate => true, :disable_timestamps => true)
|
90
90
|
invalid_records.should == [{:age => 30, :name => ""}]
|
91
91
|
end
|
92
|
+
|
93
|
+
it "validates with a custom validator if ':validate_with' is specified" do
|
94
|
+
records = [{:age => 30, :name => "Bar"}, {:age => 29, :name => "Foo"}]
|
95
|
+
validator = Proc.new { |record| record[:name] != "Foo" }
|
96
|
+
|
97
|
+
invalid_records = SampleRecord.bulk_insert(records, :validate_with => validator)
|
98
|
+
|
99
|
+
invalid_records.should == [{:age => 29, :name => "Foo"}]
|
100
|
+
end
|
101
|
+
|
102
|
+
it "validates with the custom validator when both ':validate' and ':validate_with' are specified" do
|
103
|
+
SampleRecord.send(:validates, :name, :presence => true)
|
104
|
+
records = [{:age => 30, :name => ""}, {:age => 29, :name => "Foo"}]
|
105
|
+
validator = Proc.new { |record| record[:name] != "Foo" }
|
106
|
+
|
107
|
+
invalid_records = SampleRecord.bulk_insert(records, :validate => true, :validate_with => validator)
|
108
|
+
|
109
|
+
invalid_records.should == [{:age => 29, :name => "Foo"}]
|
110
|
+
end
|
92
111
|
end
|
93
112
|
|
94
113
|
context "timestamps" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_record_bulk_insert
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Abejide Ayodele
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|