super_list 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
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