str_enum 0.1.5 → 0.1.6
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 +5 -5
- data/CHANGELOG.md +4 -0
- data/LICENSE.txt +1 -1
- data/README.md +20 -1
- data/lib/str_enum.rb +5 -2
- data/lib/str_enum/model.rb +15 -2
- data/lib/str_enum/version.rb +1 -1
- metadata +38 -15
- data/.gitignore +0 -9
- data/Gemfile +0 -7
- data/Rakefile +0 -10
- data/str_enum.gemspec +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: '0964e50be0db4cc76c892e725994f9b1063550c721d42cf91c355011ca0b20de'
|
4
|
+
data.tar.gz: 716f209f73344a5bdb29eddf2e290a36fc9153c2fcc05aca319886be85449d9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25dc2d5e6932e84e77d8575b2bc072f7736b86b365396c6f801efe6eae45d4686f16bb623aebd03b92f1cf32dd07bae992d5113be5c416fa102b6d0f64091a9b
|
7
|
+
data.tar.gz: e998f1b35ee04a0547f8016bf6e0aa98f185bcf8f82866334789536252eacb91d91f75df15928c18d92f94361ac1925fd68a9f7099c8b0f727a0004647f355e2
|
data/CHANGELOG.md
CHANGED
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -7,6 +7,9 @@ String enums for Rails!! :tada:
|
|
7
7
|
- scopes
|
8
8
|
- validations
|
9
9
|
- accessor methods
|
10
|
+
- update methods
|
11
|
+
|
12
|
+
[](https://travis-ci.org/ankane/str_enum)
|
10
13
|
|
11
14
|
## Getting Started
|
12
15
|
|
@@ -53,6 +56,13 @@ user.active?
|
|
53
56
|
user.archived?
|
54
57
|
```
|
55
58
|
|
59
|
+
#### Update Methods [master]
|
60
|
+
|
61
|
+
```ruby
|
62
|
+
user.active!
|
63
|
+
user.archived!
|
64
|
+
```
|
65
|
+
|
56
66
|
#### Forms
|
57
67
|
|
58
68
|
```erb
|
@@ -65,7 +75,12 @@ Choose which features you want with:
|
|
65
75
|
|
66
76
|
```ruby
|
67
77
|
class User < ActiveRecord::Base
|
68
|
-
str_enum :status, [:active, :archived],
|
78
|
+
str_enum :status, [:active, :archived],
|
79
|
+
scopes: false,
|
80
|
+
validate: false,
|
81
|
+
accessor_methods: false,
|
82
|
+
update_methods: false,
|
83
|
+
default: nil
|
69
84
|
end
|
70
85
|
```
|
71
86
|
|
@@ -83,6 +98,10 @@ User.archived_address
|
|
83
98
|
# accessor methods
|
84
99
|
user.active_address?
|
85
100
|
user.archived_address?
|
101
|
+
|
102
|
+
# update methods
|
103
|
+
user.active_address!
|
104
|
+
user.archived_address!
|
86
105
|
```
|
87
106
|
|
88
107
|
## History
|
data/lib/str_enum.rb
CHANGED
data/lib/str_enum/model.rb
CHANGED
@@ -5,9 +5,17 @@ module StrEnum
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
class_methods do
|
8
|
-
def str_enum(column, values, validate: true, scopes: true, accessor_methods: true, prefix: false, suffix: false, default: true)
|
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}}
|
12
|
+
if allow_nil
|
13
|
+
validate_options[:allow_nil] = true
|
14
|
+
else
|
15
|
+
validate_options[:presence] = true
|
16
|
+
end
|
17
|
+
validates column, validate_options
|
18
|
+
end
|
11
19
|
values.each do |value|
|
12
20
|
prefix = column if prefix == true
|
13
21
|
suffix = column if suffix == true
|
@@ -18,6 +26,11 @@ module StrEnum
|
|
18
26
|
read_attribute(column) == value
|
19
27
|
end
|
20
28
|
end
|
29
|
+
if update_methods && !method_defined?("#{method_name}!")
|
30
|
+
define_method "#{method_name}!" do
|
31
|
+
update!(column => value)
|
32
|
+
end
|
33
|
+
end
|
21
34
|
end
|
22
35
|
default_value = default == true ? values.first : default
|
23
36
|
after_initialize do
|
data/lib/str_enum/version.rb
CHANGED
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.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '5'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '5'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,25 +66,49 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: activerecord
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: sqlite3
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
69
97
|
description:
|
70
|
-
email:
|
71
|
-
- andrew@chartkick.com
|
98
|
+
email: andrew@chartkick.com
|
72
99
|
executables: []
|
73
100
|
extensions: []
|
74
101
|
extra_rdoc_files: []
|
75
102
|
files:
|
76
|
-
- ".gitignore"
|
77
103
|
- CHANGELOG.md
|
78
|
-
- Gemfile
|
79
104
|
- LICENSE.txt
|
80
105
|
- README.md
|
81
|
-
- Rakefile
|
82
106
|
- lib/str_enum.rb
|
83
107
|
- lib/str_enum/model.rb
|
84
108
|
- lib/str_enum/version.rb
|
85
|
-
- str_enum.gemspec
|
86
109
|
homepage: https://github.com/ankane/str_enum
|
87
|
-
licenses:
|
110
|
+
licenses:
|
111
|
+
- MIT
|
88
112
|
metadata: {}
|
89
113
|
post_install_message:
|
90
114
|
rdoc_options: []
|
@@ -94,15 +118,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
118
|
requirements:
|
95
119
|
- - ">="
|
96
120
|
- !ruby/object:Gem::Version
|
97
|
-
version: '
|
121
|
+
version: '2.4'
|
98
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
123
|
requirements:
|
100
124
|
- - ">="
|
101
125
|
- !ruby/object:Gem::Version
|
102
126
|
version: '0'
|
103
127
|
requirements: []
|
104
|
-
|
105
|
-
rubygems_version: 2.5.1
|
128
|
+
rubygems_version: 3.0.4
|
106
129
|
signing_key:
|
107
130
|
specification_version: 4
|
108
131
|
summary: String enums for Rails
|
data/.gitignore
DELETED
data/Gemfile
DELETED
data/Rakefile
DELETED
data/str_enum.gemspec
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path("../lib", __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require "str_enum/version"
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "str_enum"
|
8
|
-
spec.version = StrEnum::VERSION
|
9
|
-
spec.authors = ["Andrew Kane"]
|
10
|
-
spec.email = ["andrew@chartkick.com"]
|
11
|
-
|
12
|
-
spec.summary = "String enums for Rails"
|
13
|
-
spec.homepage = "https://github.com/ankane/str_enum"
|
14
|
-
|
15
|
-
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
16
|
-
spec.bindir = "exe"
|
17
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
18
|
-
spec.require_paths = ["lib"]
|
19
|
-
|
20
|
-
spec.add_dependency "activesupport"
|
21
|
-
|
22
|
-
spec.add_development_dependency "bundler"
|
23
|
-
spec.add_development_dependency "rake"
|
24
|
-
spec.add_development_dependency "minitest"
|
25
|
-
end
|