str_enum 0.1.4 → 0.1.5

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