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
         |