database_validations 0.7.0 → 0.7.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
  SHA256:
3
- metadata.gz: 5c0e233ecf1999d511840c65bbce2744faf3af3cfc2a1c64f1bcee504c86129e
4
- data.tar.gz: ed0cb02abcb98e1e4e8d6172a3695b953fdcc9f05561dd6c7c63945929705061
3
+ metadata.gz: 4ee6d1beb244daa4a90b9336e202f68912a3e25b55085b2459ef8e4ffea161db
4
+ data.tar.gz: e266c1b54751162c0c589a2dea9fd450bfe1dde94271d91958b612b0d96282c8
5
5
  SHA512:
6
- metadata.gz: aa02581639a2a37ae25202d32aee451934d607a96843fe13227096eeda0631ce759e538d14e34c3e523e6302ec91fe88c3a651aabd3cda717ace5fb13f9c824e
7
- data.tar.gz: 0f84690c7ce7fdd5a19c62c20ea211b33d8a5039254e3b08a5765eef050d69f426cbfcaa0d1cdaa15f00e07c0ff503d0535ccc194bfd031a90237d18e1df2a35
6
+ metadata.gz: 1d98bb0b3d2b8810c60d5dabbfab6f4aa41619a1016c7d996394839822fcd61bcc2a9fbaf0c5b0502c88c76cc1cc39d16a4691b400d8dde679ce93d2bd1908a2
7
+ data.tar.gz: 7e7725c739b7e708e3736497a753c6aa2b446008d2070b82d6eed859e662513dac65f77bc96d264abd3cb329ef502856aa6b529dd6e825911bb24b1ec536b003
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # DatabaseValidations
2
2
 
3
3
  [![Build Status](https://travis-ci.org/toptal/database_validations.svg?branch=master)](https://travis-ci.org/toptal/database_validations)
4
+ [![Gem Version](https://badge.fury.io/rb/database_validations.svg)](https://badge.fury.io/rb/database_validations)
4
5
 
5
6
  ActiveRecord provides validations on app level but it won't guarantee the
6
7
  consistent. In some cases, like `validates_uniqueness_of` it executes
@@ -154,13 +155,13 @@ Example:
154
155
 
155
156
  ```ruby
156
157
  class User < ActiveRecord::Base
157
- validates_db_uniqueness_of :field, message: 'duplicate', where: '(some_field IS NULL)', scope: :another_field
158
+ validates_db_uniqueness_of :field, message: 'duplicate', where: '(some_field IS NULL)', scope: :another_field, index_name: :unique_index
158
159
  end
159
160
 
160
161
  describe 'validations' do
161
162
  subject { User }
162
163
 
163
- it { is_expected.to validate_db_uniqueness_of(:field).with_message('duplicate').with_where('(some_field IS NULL)').scoped_to(:another_field) }
164
+ it { is_expected.to validate_db_uniqueness_of(:field).with_message('duplicate').with_where('(some_field IS NULL)').scoped_to(:another_field).with_index(:unique_index) }
164
165
  end
165
166
  ```
166
167
 
@@ -6,6 +6,7 @@
6
6
  # * `with_message(message)` -- specifies a message of the error;
7
7
  # * `scoped_to(scope)` -- specifies a scope for the validator;
8
8
  # * `with_where(where)` -- specifies a where condition for the validator;
9
+ # * `with_index(index_name)` -- specifies an index name for the validator;
9
10
  #
10
11
  # Example:
11
12
  #
@@ -25,19 +26,24 @@ RSpec::Matchers.define :validate_db_uniqueness_of do |field|
25
26
  @where = where
26
27
  end
27
28
 
29
+ chain(:with_index) do |index_name|
30
+ @index_name = index_name
31
+ end
32
+
28
33
  match do |model|
29
34
  @validators = []
30
35
 
31
36
  DatabaseValidations::Helpers.each_validator(model) do |validator|
32
37
  @validators << {
33
- field: validator.field,
34
- scope: validator.scope,
35
- where: validator.where_clause,
36
- message: validator.message
38
+ field: validator.field,
39
+ scope: validator.scope,
40
+ where: validator.where_clause,
41
+ message: validator.message,
42
+ index_name: validator.index_name
37
43
  }
38
44
  end
39
45
 
40
- @validators.include?(field: field, scope: Array.wrap(@scope), where: @where, message: @message)
46
+ @validators.include?(field: field, scope: Array.wrap(@scope), where: @where, message: @message, index_name: @index_name)
41
47
  end
42
48
 
43
49
  description do
@@ -45,7 +51,8 @@ RSpec::Matchers.define :validate_db_uniqueness_of do |field|
45
51
  desc += "With options - " if @message || @scope || @where
46
52
  desc += "message: '#{@message}'; " if @message
47
53
  desc += "scope: #{@scope}; " if @scope
48
- desc += "where: '#{@where}'. " if @where
54
+ desc += "where: '#{@where}'; " if @where
55
+ desc += "index_name: '#{index_name}'." if @index_name
49
56
  desc
50
57
  end
51
58
 
@@ -1,9 +1,5 @@
1
- module DatabaseValidations
2
- module Tasks
3
- namespace :database_validations do
4
- task :skip_db_uniqueness_validator_index_check do
5
- ENV['SKIP_DB_UNIQUENESS_VALIDATOR_INDEX_CHECK'] = 'true'
6
- end
7
- end
1
+ namespace :database_validations do
2
+ task :skip_db_uniqueness_validator_index_check do
3
+ ENV['SKIP_DB_UNIQUENESS_VALIDATOR_INDEX_CHECK'] = 'true'
8
4
  end
9
5
  end
@@ -1,3 +1,3 @@
1
1
  module DatabaseValidations
2
- VERSION = '0.7.0'
2
+ VERSION = '0.7.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: database_validations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evgeniy Demin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-16 00:00:00.000000000 Z
11
+ date: 2018-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord