symbolic_attribute 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 +4 -4
- data/README.md +18 -2
- data/lib/symbolic_attribute/concern.rb +24 -0
- data/lib/symbolic_attribute/railtie.rb +1 -1
- data/lib/symbolic_attribute/version.rb +1 -1
- metadata +20 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 130f99c093bdbac8998f76581b20f327006852b6
|
4
|
+
data.tar.gz: 9256f6d718173865e2a84e43fe5582d9fe5c5c76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c324400cb983e1dfab60ddeb8331fee116f4413597eb1396ab69478352768b1389b9994d0a89a0839fe8889c6df425aeba3aa8220c092f283477d3236143cbf
|
7
|
+
data.tar.gz: 6a07b6840e17557cab1c388aa6f624775f33b6a150159dfe7ad31c4b84614635eb2d2e6dc926d19cbc79f5d23143f98e2570803f45e7ffd8b312748569f43090
|
data/README.md
CHANGED
@@ -32,12 +32,28 @@ Or install it yourself as:
|
|
32
32
|
|
33
33
|
```ruby
|
34
34
|
|
35
|
-
class Participation
|
36
|
-
|
35
|
+
class Participation < ActiveRecord::Base
|
36
|
+
symbolic_attribute :role,
|
37
37
|
values: %i{buyer seller},
|
38
38
|
allow_nil: true
|
39
39
|
end
|
40
40
|
|
41
|
+
#Outside ActiveRecord, we need to implement an attribute accessor and the read_attribute method used by ActiveModel::Validation
|
42
|
+
class Participation
|
43
|
+
symbolic_attribute :role,
|
44
|
+
values: %i{buyer seller},
|
45
|
+
allow_nil: true
|
46
|
+
|
47
|
+
|
48
|
+
attr_accessor :role
|
49
|
+
|
50
|
+
def read_attribute(attr)
|
51
|
+
instance_variable_get :"@#{attr}"
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
|
41
57
|
Participation.roles
|
42
58
|
> [:buyer, :seller]
|
43
59
|
|
@@ -7,6 +7,11 @@ require 'active_support/core_ext/class/attribute'
|
|
7
7
|
module SymbolicAttribute
|
8
8
|
module Concern
|
9
9
|
extend ActiveSupport::Concern
|
10
|
+
|
11
|
+
included do
|
12
|
+
include ActiveModel::Validations unless included_modules.include?(ActiveModel::Validations)
|
13
|
+
end
|
14
|
+
|
10
15
|
module ClassMethods
|
11
16
|
def symbolic_attribute(attr, opts = {})
|
12
17
|
|
@@ -22,6 +27,25 @@ module SymbolicAttribute
|
|
22
27
|
class_attribute class_attr_name, :instance_reader => false, :instance_writer => false
|
23
28
|
send "#{class_attr_name}=", opts.delete(:values).map(&:to_sym)
|
24
29
|
validates attr, opts.merge(:inclusion => { :in => proc{|instance| instance.class.send(class_attr_name)} })
|
30
|
+
|
31
|
+
define_singleton_method "human_#{attr}" do |val, options={}|
|
32
|
+
options = { :count => 1 }.merge!(options)
|
33
|
+
|
34
|
+
defaults = lookup_ancestors.map do |klass|
|
35
|
+
:"#{self.i18n_scope}.symbolic_attributes.#{klass.model_name.i18n_key}.#{attr}.#{val}"
|
36
|
+
end
|
37
|
+
|
38
|
+
defaults << options.delete(:default) if options[:default]
|
39
|
+
defaults << val.to_s.humanize
|
40
|
+
|
41
|
+
options[:default] = defaults
|
42
|
+
I18n.translate(defaults.shift, options)
|
43
|
+
end
|
44
|
+
|
45
|
+
define_method "human_#{attr}" do |options = {}|
|
46
|
+
self.class.send "human_#{attr}", send(attr), options
|
47
|
+
end
|
48
|
+
|
25
49
|
end
|
26
50
|
|
27
51
|
end
|
metadata
CHANGED
@@ -1,97 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: symbolic_attribute
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- itkin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
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
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activemodel
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: pry
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '1.10'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.10'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '10.0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '10.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rspec
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - '>='
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - '>='
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
description:
|
@@ -101,9 +101,9 @@ executables: []
|
|
101
101
|
extensions: []
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
|
-
-
|
105
|
-
-
|
106
|
-
-
|
104
|
+
- .gitignore
|
105
|
+
- .rspec
|
106
|
+
- .travis.yml
|
107
107
|
- CODE_OF_CONDUCT.md
|
108
108
|
- Gemfile
|
109
109
|
- LICENSE.txt
|
@@ -126,17 +126,17 @@ require_paths:
|
|
126
126
|
- lib
|
127
127
|
required_ruby_version: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - '>='
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0'
|
132
132
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
133
|
requirements:
|
134
|
-
- -
|
134
|
+
- - '>='
|
135
135
|
- !ruby/object:Gem::Version
|
136
136
|
version: '0'
|
137
137
|
requirements: []
|
138
138
|
rubyforge_project:
|
139
|
-
rubygems_version: 2.
|
139
|
+
rubygems_version: 2.2.2
|
140
140
|
signing_key:
|
141
141
|
specification_version: 4
|
142
142
|
summary: RoR ActiveRecord helper to deal with constants stored in db
|