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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 12fff433d05e11c1066494c5297e788635e4aeca
4
- data.tar.gz: 916b5a0325ef0910e3525cace4a376b740f8c95b
2
+ SHA256:
3
+ metadata.gz: '0964e50be0db4cc76c892e725994f9b1063550c721d42cf91c355011ca0b20de'
4
+ data.tar.gz: 716f209f73344a5bdb29eddf2e290a36fc9153c2fcc05aca319886be85449d9b
5
5
  SHA512:
6
- metadata.gz: 407ec3cc5d7293bb638195ab7ebe8ee0abe0c53ee87cdc36ca45ccec63831e6c43c772db086423bd40e442fb21a2ff5b22d5a7876153e7b0ba0ba8fac345a15f
7
- data.tar.gz: bbcfc66b2d2345889718ffd96a094bbe3a9d8a8e7958e15ca6290bb4ef9801a71ae19497114bcc4eadbd8eb8a6d8cd405e80649709f619ebcebeb2fbae96f7d1
6
+ metadata.gz: 25dc2d5e6932e84e77d8575b2bc072f7736b86b365396c6f801efe6eae45d4686f16bb623aebd03b92f1cf32dd07bae992d5113be5c416fa102b6d0f64091a9b
7
+ data.tar.gz: e998f1b35ee04a0547f8016bf6e0aa98f185bcf8f82866334789536252eacb91d91f75df15928c18d92f94361ac1925fd68a9f7099c8b0f727a0004647f355e2
@@ -1,3 +1,7 @@
1
+ ## 0.1.6
2
+
3
+ - Added update methods
4
+
1
5
  ## 0.1.5
2
6
 
3
7
  - Added `default` option
@@ -1,4 +1,4 @@
1
- Copyright (c) 2016 Andrew Kane
1
+ Copyright (c) 2016-2019 Andrew Kane
2
2
 
3
3
  MIT License
4
4
 
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], scopes: false, validate: false, accessor_methods: false
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
@@ -1,7 +1,10 @@
1
- require "str_enum/version"
1
+ # dependencies
2
2
  require "active_support"
3
+
4
+ # modules
3
5
  require "str_enum/model"
6
+ require "str_enum/version"
4
7
 
5
8
  ActiveSupport.on_load(:active_record) do
6
- include(StrEnum::Model)
9
+ include StrEnum::Model
7
10
  end
@@ -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
- validates column, presence: true, inclusion: {in: values} if validate
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
@@ -1,3 +1,3 @@
1
1
  module StrEnum
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
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.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-12 00:00:00.000000000 Z
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: '0'
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: '0'
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: '0'
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
- rubyforge_project:
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
@@ -1,9 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
data/Gemfile DELETED
@@ -1,7 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- # Specify your gem's dependencies in str_enum.gemspec
4
- gemspec
5
-
6
- gem "activerecord", "~> 5.0.0"
7
- gem "sqlite3"
data/Rakefile DELETED
@@ -1,10 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
3
-
4
- Rake::TestTask.new(:test) do |t|
5
- t.libs << "test"
6
- t.libs << "lib"
7
- t.test_files = FileList["test/**/*_test.rb"]
8
- end
9
-
10
- task default: :test
@@ -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