assignable_values 0.15.0 → 0.15.1

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
  SHA256:
3
- metadata.gz: d0359f423877ba1c7d9b303053434f7d80077da0cf314a964b6577f31b97fd01
4
- data.tar.gz: e3818b1b35b173d4db2a896092a7cf0ee7f8d93381631cd1cfbbf62f64fc6783
3
+ metadata.gz: 8a7a9d96e5e738273b161df4a8cf85c5871122f909b6e50aad62fde7e7a21f14
4
+ data.tar.gz: 9b09dd1a6d0e1270876676442eeda26ca6f03650954b104efc9738aba80b0770
5
5
  SHA512:
6
- metadata.gz: 479c5751e8086031feadcc70a06b878d04020f5fc023b69afd790c2a684f219d56e6d44abfa31387aa342a5c08b4ecfdcea6da085bc9060685ac04750fef3fba
7
- data.tar.gz: c38e04dc6003f5f3ab055eeb2b4a9183351c4a7101da42750bd381263e190cdbca0e9638c5e44a88e6510f6aa741eac1612285b1bbfb5347dbb599fdefa95388
6
+ metadata.gz: 3c040fd853c739f57b23698124e5e0087ddfdc3a40f0eb26b6162089ed740888c325248cb49c69d7bee230a4df2817c094f2179f72ae5b284a844a2a1cb34239
7
+ data.tar.gz: 161e04475ee56b531af8ad5b1b8dc65ebc601ad3c2dbd02cc833b87e78d3efe7d595d9bf3b3165da771eec12fc25283be935247ed1e1c6d0eeaded4f9c725d0e
data/CHANGELOG.md CHANGED
@@ -9,6 +9,13 @@ This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html
9
9
  ### Compatible changes
10
10
 
11
11
 
12
+ ## 0.15.1 - 2018-11-05
13
+
14
+ ### Compatible changes
15
+
16
+ - Add `#humanized_values` for the `mutliple: true` case.
17
+
18
+
12
19
  ## 0.15.0 - 2018-10-26
13
20
 
14
21
  ### Breaking changes
data/README.md CHANGED
@@ -185,8 +185,8 @@ In this case, every *subset* of the given values is valid, for example `['pop',
185
185
  For humanization, you can still use
186
186
 
187
187
  ```
188
- song.humanizable_genre('pop') # => "Pop music"
189
- song.assignable_humanizable_genres.last.humanized # => "Electronic music"
188
+ song.humanized_genre('pop') # => "Pop music"
189
+ song.humanized_assignable_genres.last.humanized # => "Electronic music"
190
190
  ```
191
191
 
192
192
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- assignable_values (0.15.0)
4
+ assignable_values (0.15.1)
5
5
  activerecord (>= 2.3)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- assignable_values (0.15.0)
4
+ assignable_values (0.15.1)
5
5
  activerecord (>= 2.3)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- assignable_values (0.15.0)
4
+ assignable_values (0.15.1)
5
5
  activerecord (>= 2.3)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- assignable_values (0.15.0)
4
+ assignable_values (0.15.1)
5
5
  activerecord (>= 2.3)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- assignable_values (0.15.0)
4
+ assignable_values (0.15.1)
5
5
  activerecord (>= 2.3)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- assignable_values (0.15.0)
4
+ assignable_values (0.15.1)
5
5
  activerecord (>= 2.3)
6
6
 
7
7
  GEM
@@ -37,7 +37,7 @@ module AssignableValues
37
37
  def define_humanized_value_class_method
38
38
  restriction = self
39
39
  enhance_model_singleton do
40
- define_method :"humanized_#{restriction.property}" do |given_value|
40
+ define_method :"humanized_#{restriction.property.to_s.singularize}" do |given_value|
41
41
  restriction.humanized_value(given_value)
42
42
  end
43
43
  end
@@ -55,6 +55,19 @@ module AssignableValues
55
55
  value = given_value || send(restriction.property)
56
56
  restriction.humanized_value(value)
57
57
  end
58
+
59
+ if multiple
60
+ define_method :"humanized_#{restriction.property}" do
61
+ values = send(restriction.property)
62
+ if values.respond_to?(:map)
63
+ values.map do |value|
64
+ restriction.humanized_value(value)
65
+ end
66
+ else
67
+ values
68
+ end
69
+ end
70
+ end
58
71
  end
59
72
  end
60
73
 
@@ -1,3 +1,3 @@
1
1
  module AssignableValues
2
- VERSION = '0.15.0'
2
+ VERSION = '0.15.1'
3
3
  end
@@ -21,7 +21,7 @@ describe AssignableValues::ActiveRecord do
21
21
  %w[pop rock]
22
22
  end
23
23
 
24
- assignable_values_for :multi_genres, :allow_blank => true do
24
+ assignable_values_for :multi_genres, :multiple => true, :allow_blank => true do
25
25
  %w[pop rock]
26
26
  end
27
27
  end
@@ -98,6 +98,10 @@ describe AssignableValues::ActiveRecord do
98
98
  assignable_values_for :genre do
99
99
  %w[pop rock]
100
100
  end
101
+
102
+ assignable_values_for :multi_genres, :multiple => true, :allow_blank => true do
103
+ %w[pop rock]
104
+ end
101
105
  end
102
106
  end
103
107
 
@@ -159,6 +163,31 @@ describe AssignableValues::ActiveRecord do
159
163
  @klass.humanized_genre('rock').should == 'Rock music'
160
164
  end
161
165
 
166
+ context 'for multiple: true' do
167
+ it 'should raise when trying to humanize a value without an argument' do
168
+ song = @klass.new
169
+ proc { song.humanized_multi_genre }.should raise_error(ArgumentError)
170
+ end
171
+
172
+ it 'should generate an instance method to retrieve the humanization of any given value' do
173
+ song = @klass.new(:genre => 'pop')
174
+ song.humanized_multi_genre('rock').should == 'Rock music'
175
+ end
176
+
177
+ it 'should generate a class method to retrieve the humanization of any given value' do
178
+ @klass.humanized_multi_genre('rock').should == 'Rock music'
179
+ end
180
+
181
+ it 'should generate an instance method to retrieve the humanizations of all current values' do
182
+ song = @klass.new
183
+ song.multi_genres = nil
184
+ song.humanized_multi_genres.should == nil
185
+ song.multi_genres = []
186
+ song.humanized_multi_genres.should == []
187
+ song.multi_genres = ['pop', 'rock']
188
+ song.humanized_multi_genres.should == ['Pop music', 'Rock music']
189
+ end
190
+ end
162
191
  end
163
192
 
164
193
  context 'if the :allow_blank option is set to true' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: assignable_values
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.15.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henning Koch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-26 00:00:00.000000000 Z
11
+ date: 2018-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -90,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
90
90
  version: '0'
91
91
  requirements: []
92
92
  rubyforge_project:
93
- rubygems_version: 2.7.7
93
+ rubygems_version: 2.7.6
94
94
  signing_key:
95
95
  specification_version: 4
96
96
  summary: Restrict the values assignable to ActiveRecord attributes or associations