str_enum 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Build Status](https://travis-ci.org/ankane/str_enum.svg?branch=master)](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
|