str_enum 0.1.0 → 0.1.1

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: b1feedc135da7927cbe30d1b3adea0905a2c1cde
4
- data.tar.gz: c07e9d2a957da6a464b60ba6c258adcbefeb445a
3
+ metadata.gz: 50458b9b15471d5a6656996aafd655245fba64fd
4
+ data.tar.gz: f04c3fa378db71e53714cd844fe99c776e0ca42f
5
5
  SHA512:
6
- metadata.gz: 35f31098800bf578473e2edb8c46cb76134e63492addd325647f948c3754b2234f994af2ac132661ea2fa16ae17c0a0ec4b5804f85ba6d40354cdeb863ac5bd2
7
- data.tar.gz: 5b99e03f4dd40a034ae6d8e86e52931e6894b78d8da234c4e597e26a03ec00e78ff1c04d01bc7a5027fabb551e9b58115fe27a3a51d017cf5be1de50c7bad89a
6
+ metadata.gz: f3eb2d10031cdf8a0b7967b02d2cf4624f0893480b05e8dbec893d1cc00e693a3c1acca73f4fc8fe361f4f4830f98e492f03eaf711bef7d29dfcadb67eae2414
7
+ data.tar.gz: 62c5e91bc1417967d641aec5865ce2120ad8b2fe01d2b09389bf205cc0778dc84b2a8401e386572f020e6aef9c4f5e5c7d1cc41083a9dcc5c12c2042bed8a46b
data/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ ## 0.1.1
2
+
3
+ - Added `prefix` option
4
+
5
+ ## 0.1.0
6
+
7
+ - First release
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2016 Andrew Kane
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # str_enum
2
2
 
3
- Don’t want to store enums as integers in your database? Introducing...
3
+ Don’t like storing enums as integers in your database? Introducing...
4
4
 
5
5
  String enums for Rails!! :tada:
6
6
 
@@ -24,32 +24,32 @@ class User < ActiveRecord::Base
24
24
  end
25
25
  ```
26
26
 
27
- The first value will be the initial value. This gives you...
27
+ The first value will be the initial value. This gives you:
28
28
 
29
- ### Scopes
29
+ #### Scopes
30
30
 
31
31
  ```ruby
32
32
  User.active
33
33
  User.archived
34
34
  ```
35
35
 
36
- ### Validations
36
+ #### Validations
37
37
 
38
38
  ```ruby
39
39
  user = User.new(status: "unknown")
40
40
  user.valid? # false
41
41
  ```
42
42
 
43
- ### Accessor Methods
43
+ #### Accessor Methods
44
44
 
45
45
  ```ruby
46
46
  user.active?
47
47
  user.archived?
48
48
  ```
49
49
 
50
- ## Customize
50
+ ## Options
51
51
 
52
- Choose which features you want
52
+ Choose which features you want with:
53
53
 
54
54
  ```ruby
55
55
  class User < ActiveRecord::Base
@@ -57,6 +57,26 @@ class User < ActiveRecord::Base
57
57
  end
58
58
  ```
59
59
 
60
+ Prevent name collisions with the `prefix` option.
61
+
62
+ ```ruby
63
+ class User < ActiveRecord::Base
64
+ str_enum :address_status, [:active, :archived], prefix: :address
65
+ end
66
+
67
+ # scopes
68
+ User.address_active
69
+ User.address_archived
70
+
71
+ # accessor methods
72
+ user.address_active?
73
+ user.address_archived?
74
+ ```
75
+
76
+ ## History
77
+
78
+ View the [changelog](https://github.com/ankane/str_enum/blob/master/CHANGELOG.md)
79
+
60
80
  ## Contributing
61
81
 
62
82
  Everyone is encouraged to help improve this project. Here are a few ways you can help:
@@ -1,3 +1,3 @@
1
1
  module StrEnum
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/str_enum.rb CHANGED
@@ -2,13 +2,15 @@ require "str_enum/version"
2
2
  require "active_support"
3
3
 
4
4
  module StrEnum
5
- def str_enum(column, values, validate: true, scopes: true, accessor_methods: true)
5
+ def str_enum(column, values, validate: true, scopes: true, accessor_methods: true, prefix: false)
6
6
  values = values.map(&:to_s)
7
7
  validates column, presence: true, inclusion: {in: values} if validate
8
8
  values.each do |value|
9
- scope value, -> { where(column => value) } if scopes && !respond_to?(value)
10
- if accessor_methods && !method_defined?("#{value}?")
11
- define_method "#{value}?" do
9
+ prefix = column if prefix == true
10
+ method_name = prefix ? "#{prefix}_#{value}" : value
11
+ scope method_name, -> { where(column => value) } if scopes && !respond_to?(method_name)
12
+ if accessor_methods && !method_defined?("#{method_name}?")
13
+ define_method "#{method_name}?" do
12
14
  read_attribute(column) == value
13
15
  end
14
16
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: str_enum
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
@@ -74,7 +74,9 @@ extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
76
  - ".gitignore"
77
+ - CHANGELOG.md
77
78
  - Gemfile
79
+ - LICENSE.txt
78
80
  - README.md
79
81
  - Rakefile
80
82
  - lib/str_enum.rb