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 +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/str_enum.rb +2 -25
- data/lib/str_enum/model.rb +32 -0
- data/lib/str_enum/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 12fff433d05e11c1066494c5297e788635e4aeca
|
4
|
+
data.tar.gz: 916b5a0325ef0910e3525cace4a376b740f8c95b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 407ec3cc5d7293bb638195ab7ebe8ee0abe0c53ee87cdc36ca45ccec63831e6c43c772db086423bd40e442fb21a2ff5b22d5a7876153e7b0ba0ba8fac345a15f
|
7
|
+
data.tar.gz: bbcfc66b2d2345889718ffd96a094bbe3a9d8a8e7958e15ca6290bb4ef9801a71ae19497114bcc4eadbd8eb8a6d8cd405e80649709f619ebcebeb2fbae96f7d1
|
data/CHANGELOG.md
CHANGED
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
|
-
|
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
|
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.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-
|
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
|