str_enum 0.1.4 → 0.1.5

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
  SHA1:
3
- metadata.gz: c7a007594ea44a4ff3d3793df4cb9bdb3340bbde
4
- data.tar.gz: 839f233f5aeb3abd9ed3662063803b59f29783be
3
+ metadata.gz: 12fff433d05e11c1066494c5297e788635e4aeca
4
+ data.tar.gz: 916b5a0325ef0910e3525cace4a376b740f8c95b
5
5
  SHA512:
6
- metadata.gz: 131fc82a1bdf5f70d7611321c5b2c93d3ca2ab4d3274f9f16e37a58de98ea86d66048ab14c52b2d5cd4fa2dcc4b24c83eb613b96217c24bbc562c275c4f308db
7
- data.tar.gz: f1c2a90d1fe6bf60e321a6c0c7b7449427ef42797ee791403c52e7d6846e61ce6dc4dcd8c1cd594321b9c0724083ebbd7134e8626576aef263a807347f8cc050
6
+ metadata.gz: 407ec3cc5d7293bb638195ab7ebe8ee0abe0c53ee87cdc36ca45ccec63831e6c43c772db086423bd40e442fb21a2ff5b22d5a7876153e7b0ba0ba8fac345a15f
7
+ data.tar.gz: bbcfc66b2d2345889718ffd96a094bbe3a9d8a8e7958e15ca6290bb4ef9801a71ae19497114bcc4eadbd8eb8a6d8cd405e80649709f619ebcebeb2fbae96f7d1
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.1.5
2
+
3
+ - Added `default` option
4
+ - Added ability to include manually
5
+
1
6
  ## 0.1.4
2
7
 
3
8
  - Fixed error with `select`
data/lib/str_enum.rb CHANGED
@@ -1,30 +1,7 @@
1
1
  require "str_enum/version"
2
2
  require "active_support"
3
-
4
- module StrEnum
5
- def str_enum(column, values, validate: true, scopes: true, accessor_methods: true, prefix: false, suffix: false)
6
- values = values.map(&:to_s)
7
- validates column, presence: true, inclusion: {in: values} if validate
8
- values.each do |value|
9
- prefix = column if prefix == true
10
- suffix = column if suffix == true
11
- method_name = [prefix, value, suffix].select { |v| v }.join("_")
12
- scope method_name, -> { where(column => value) } if scopes && !respond_to?(method_name)
13
- if accessor_methods && !method_defined?("#{method_name}?")
14
- define_method "#{method_name}?" do
15
- read_attribute(column) == value
16
- end
17
- end
18
- end
19
- after_initialize do
20
- send("#{column}=", values.first) unless try(column)
21
- end
22
- define_singleton_method column.to_s.pluralize do
23
- values
24
- end
25
- end
26
- end
3
+ require "str_enum/model"
27
4
 
28
5
  ActiveSupport.on_load(:active_record) do
29
- extend(StrEnum)
6
+ include(StrEnum::Model)
30
7
  end
@@ -0,0 +1,32 @@
1
+ require "active_support/concern"
2
+
3
+ module StrEnum
4
+ module Model
5
+ extend ActiveSupport::Concern
6
+
7
+ class_methods do
8
+ def str_enum(column, values, validate: true, scopes: true, accessor_methods: true, prefix: false, suffix: false, default: true)
9
+ values = values.map(&:to_s)
10
+ validates column, presence: true, inclusion: {in: values} if validate
11
+ values.each do |value|
12
+ prefix = column if prefix == true
13
+ suffix = column if suffix == true
14
+ method_name = [prefix, value, suffix].select { |v| v }.join("_")
15
+ scope method_name, -> { where(column => value) } if scopes && !respond_to?(method_name)
16
+ if accessor_methods && !method_defined?("#{method_name}?")
17
+ define_method "#{method_name}?" do
18
+ read_attribute(column) == value
19
+ end
20
+ end
21
+ end
22
+ default_value = default == true ? values.first : default
23
+ after_initialize do
24
+ send("#{column}=", default_value) unless try(column)
25
+ end
26
+ define_singleton_method column.to_s.pluralize do
27
+ values
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,3 +1,3 @@
1
1
  module StrEnum
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
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.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-29 00:00:00.000000000 Z
11
+ date: 2016-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -80,6 +80,7 @@ files:
80
80
  - README.md
81
81
  - Rakefile
82
82
  - lib/str_enum.rb
83
+ - lib/str_enum/model.rb
83
84
  - lib/str_enum/version.rb
84
85
  - str_enum.gemspec
85
86
  homepage: https://github.com/ankane/str_enum