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 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