super_list 1.2.1 → 1.3.0

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.
data/README.rdoc CHANGED
@@ -10,11 +10,15 @@
10
10
  super_list :gender2, 'Gender', :use_i18n => true
11
11
  end
12
12
 
13
- User.new(:gender => 'NF').valid? => false
14
- User.new(:gender => 'M').valid? => true
15
- User.new(:gender => 'F').gender.to_s => 'Female'
16
- User.new(:gender => 'F').gender.to_s(:amos) => 'M2'
17
- User.new(:gender => 'F').original_gender => 'F'
13
+ User.new(:gender => 'NF').valid? => false
14
+ User.new(:gender => 'M').valid? => true
15
+ User.new(:gender => 'F').gender.to_s => 'Female'
16
+ User.new(:gender => 'F').gender.to_s(:amos) => 'M2'
17
+ User.new(:gender => 'F').original_gender => 'F'
18
+
19
+ User.new(:gender => 'Man').valid? => true
20
+ User.new(:gender => 'Man').original_gender => 'M'
21
+ User.new(:gender => 'Man').gender.to_s(:amos) => 'M1'
18
22
 
19
23
  user = User.new(:gender => 'F', :gender2 => 'M')
20
24
  user.gender2.to_s => "translation missing: en.Gender.Man"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.1
1
+ 1.3.0
data/lib/super_list.rb CHANGED
@@ -79,8 +79,20 @@ module SuperListActiveRecord
79
79
  data = SuperList[data]
80
80
  options = data.options.merge(options)
81
81
 
82
- unless options[:no_validation]
83
- validates_inclusion_of original_column, { :in => data.keys }.merge(options)
82
+ before_validation do
83
+ value = attributes[column.to_s]
84
+ keys = data.keys
85
+
86
+ if !keys.include?(value)
87
+ index = data.values.find_index(value)
88
+
89
+ if index
90
+ self.send("#{column}=", keys[index])
91
+ elsif !options[:no_validation]
92
+ self.errors.add(column, I18n.t('errors.messages.inclusion'))
93
+ return false
94
+ end
95
+ end
84
96
  end
85
97
 
86
98
  define_method "#{column}" do |*opt|
@@ -17,14 +17,22 @@ class SuperListTest < ActiveSupport::TestCase
17
17
  test "only valid when included" do
18
18
  ## gender allow_blank => true
19
19
  assert Factory.build(:user).valid?
20
- assert !Factory.build(:user, :gender => 'A').valid?
21
- assert !Factory.build(:user, :gender => 'MF').valid?
20
+ assert Factory.build(:user, :gender => 'A').invalid?
21
+ assert Factory.build(:user, :gender => 'MF').invalid?
22
22
  assert Factory.build(:user, :gender => 'M').valid?
23
23
  assert Factory.build(:user, :gender => 'F').valid?
24
24
 
25
25
  ## gender1 allow_blank => false
26
26
  assert Factory.build(:user, :gender1 => 'M').valid?
27
- assert !Factory.build(:user, :gender1 => '').valid?
27
+ assert Factory.build(:user, :gender1 => '').invalid?
28
+ end
29
+
30
+ test "set value" do
31
+ user = Factory.build(:user, :gender => 'Man')
32
+ assert user.valid?
33
+ assert_equal user.gender.to_s(:amos), 'M1'
34
+ user = Factory.build(:user, :gender => 'NoValue')
35
+ assert user.invalid?
28
36
  end
29
37
 
30
38
  test "no validations for gender2" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: super_list
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 2
9
- - 1
10
- version: 1.2.1
8
+ - 3
9
+ - 0
10
+ version: 1.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jinzhu