Commit caa8090addbabb07f9287b90fa0f85e791cb7ed6
1 parent
8e1cd3f7
Exists in
master
and in
29 other branches
rails3: fix birthday validation
Showing
2 changed files
with
5 additions
and
6 deletions
Show diff stats
app/models/person.rb
1 | 1 | # A person is the profile of an user holding all relationships with the rest of the system |
2 | 2 | class Person < Profile |
3 | 3 | |
4 | - attr_accessible :organization, :contact_information, :sex | |
4 | + attr_accessible :organization, :contact_information, :sex, :birth_date | |
5 | 5 | |
6 | 6 | SEARCH_FILTERS += %w[ |
7 | 7 | more_popular |
... | ... | @@ -159,9 +159,8 @@ class Person < Profile |
159 | 159 | validates_multiparameter_assignments |
160 | 160 | |
161 | 161 | validates_each :birth_date do |record,attr,value| |
162 | - if value && value.year == 1 | |
163 | - record.errors.add(attr) | |
164 | - end | |
162 | + date_str = record.birth_date_before_type_cast | |
163 | + record.errors.add(attr) if value.blank? && !date_str.blank? | |
165 | 164 | end |
166 | 165 | |
167 | 166 | def self.fields | ... | ... |
test/unit/person_test.rb
... | ... | @@ -1168,14 +1168,14 @@ class PersonTest < ActiveSupport::TestCase |
1168 | 1168 | should 'handle multiparameter attribute exception on birth date field' do |
1169 | 1169 | assert_nothing_raised ActiveRecord::MultiparameterAssignmentErrors do |
1170 | 1170 | p = Person.new( |
1171 | - :name => 'birthday', :identifier => 'birthday', :user_id => 999, | |
1171 | + :name => 'birthday', :identifier => 'birthday', | |
1172 | 1172 | 'birth_date(1i)' => '', 'birth_date(2i)' => '6', 'birth_date(3i)' => '16' |
1173 | 1173 | ) |
1174 | 1174 | end |
1175 | 1175 | end |
1176 | 1176 | |
1177 | 1177 | should 'not accept an empty year on birth date' do |
1178 | - p = Person.new({"birth_date(2i)"=>"11", "birth_date(3i)"=>"15", "birth_date(1i)"=>""}) | |
1178 | + p = Person.new(:birth_date => "1115") | |
1179 | 1179 | p.valid? |
1180 | 1180 | assert p.errors[:birth_date.to_s].present? |
1181 | 1181 | end | ... | ... |