str_enum 0.1.6 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0964e50be0db4cc76c892e725994f9b1063550c721d42cf91c355011ca0b20de'
4
- data.tar.gz: 716f209f73344a5bdb29eddf2e290a36fc9153c2fcc05aca319886be85449d9b
3
+ metadata.gz: 30fac40f486d06a93887028246d9c51ccac853a0fd21cecf9d8873a9453bd341
4
+ data.tar.gz: 73002d19b0d3a24877d388b03e15ef6d3dc71c56b93683c0ef76c1e70100e1be
5
5
  SHA512:
6
- metadata.gz: 25dc2d5e6932e84e77d8575b2bc072f7736b86b365396c6f801efe6eae45d4686f16bb623aebd03b92f1cf32dd07bae992d5113be5c416fa102b6d0f64091a9b
7
- data.tar.gz: e998f1b35ee04a0547f8016bf6e0aa98f185bcf8f82866334789536252eacb91d91f75df15928c18d92f94361ac1925fd68a9f7099c8b0f727a0004647f355e2
6
+ metadata.gz: 19297f2f6eff7a1e3364792bcd9642b82afb4cb89bd646577ce605d4c3944126a76d8afea2ad2f021247453c95ffeb157ca346f0e9d7a28af788abcfcee2affe
7
+ data.tar.gz: 71a49e88afa221f46bbb831af6d41d5b3747d47edf349f23baa6e98fb8409b23c4fc4c1edc7d9bc29ca9daca8703b8ca863ff78517b58e5d3258652e26c8bcbd
@@ -1,3 +1,8 @@
1
+ ## 0.2.0
2
+
3
+ - Added negative scopes
4
+ - Moved presence validation message before inclusion message
5
+
1
6
  ## 0.1.6
2
7
 
3
8
  - Added update methods
data/README.md CHANGED
@@ -42,6 +42,13 @@ User.active
42
42
  User.archived
43
43
  ```
44
44
 
45
+ And negative scopes
46
+
47
+ ```ruby
48
+ User.not_active
49
+ User.not_archived
50
+ ```
51
+
45
52
  #### Validations
46
53
 
47
54
  ```ruby
@@ -56,7 +63,7 @@ user.active?
56
63
  user.archived?
57
64
  ```
58
65
 
59
- #### Update Methods [master]
66
+ #### Update Methods
60
67
 
61
68
  ```ruby
62
69
  user.active!
@@ -8,19 +8,23 @@ module StrEnum
8
8
  def str_enum(column, values, validate: true, scopes: true, accessor_methods: true, update_methods: true, prefix: false, suffix: false, default: true, allow_nil: false)
9
9
  values = values.map(&:to_s)
10
10
  if validate
11
- validate_options = {inclusion: {in: values}}
11
+ validate_options = {}
12
12
  if allow_nil
13
13
  validate_options[:allow_nil] = true
14
14
  else
15
15
  validate_options[:presence] = true
16
16
  end
17
+ validate_options[:inclusion] = {in: values}
17
18
  validates column, validate_options
18
19
  end
19
20
  values.each do |value|
20
21
  prefix = column if prefix == true
21
22
  suffix = column if suffix == true
22
23
  method_name = [prefix, value, suffix].select { |v| v }.join("_")
23
- scope method_name, -> { where(column => value) } if scopes && !respond_to?(method_name)
24
+ if scopes
25
+ scope method_name, -> { where(column => value) } unless respond_to?(method_name)
26
+ scope "not_#{method_name}", -> { where.not(column => value) } unless respond_to?("not_#{method_name}")
27
+ end
24
28
  if accessor_methods && !method_defined?("#{method_name}?")
25
29
  define_method "#{method_name}?" do
26
30
  read_attribute(column) == value
@@ -1,3 +1,3 @@
1
1
  module StrEnum
2
- VERSION = "0.1.6"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: str_enum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-16 00:00:00.000000000 Z
11
+ date: 2019-10-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
125
  - !ruby/object:Gem::Version
126
126
  version: '0'
127
127
  requirements: []
128
- rubygems_version: 3.0.4
128
+ rubygems_version: 3.0.3
129
129
  signing_key:
130
130
  specification_version: 4
131
131
  summary: String enums for Rails