Commit caa8090addbabb07f9287b90fa0f85e791cb7ed6

Authored by Victor Costa
1 parent 8e1cd3f7

rails3: fix birthday validation

app/models/person.rb
1 # A person is the profile of an user holding all relationships with the rest of the system 1 # A person is the profile of an user holding all relationships with the rest of the system
2 class Person < Profile 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 SEARCH_FILTERS += %w[ 6 SEARCH_FILTERS += %w[
7 more_popular 7 more_popular
@@ -159,9 +159,8 @@ class Person &lt; Profile @@ -159,9 +159,8 @@ class Person &lt; Profile
159 validates_multiparameter_assignments 159 validates_multiparameter_assignments
160 160
161 validates_each :birth_date do |record,attr,value| 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 end 164 end
166 165
167 def self.fields 166 def self.fields
test/unit/person_test.rb
@@ -1168,14 +1168,14 @@ class PersonTest &lt; ActiveSupport::TestCase @@ -1168,14 +1168,14 @@ class PersonTest &lt; ActiveSupport::TestCase
1168 should 'handle multiparameter attribute exception on birth date field' do 1168 should 'handle multiparameter attribute exception on birth date field' do
1169 assert_nothing_raised ActiveRecord::MultiparameterAssignmentErrors do 1169 assert_nothing_raised ActiveRecord::MultiparameterAssignmentErrors do
1170 p = Person.new( 1170 p = Person.new(
1171 - :name => 'birthday', :identifier => 'birthday', :user_id => 999, 1171 + :name => 'birthday', :identifier => 'birthday',
1172 'birth_date(1i)' => '', 'birth_date(2i)' => '6', 'birth_date(3i)' => '16' 1172 'birth_date(1i)' => '', 'birth_date(2i)' => '6', 'birth_date(3i)' => '16'
1173 ) 1173 )
1174 end 1174 end
1175 end 1175 end
1176 1176
1177 should 'not accept an empty year on birth date' do 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 p.valid? 1179 p.valid?
1180 assert p.errors[:birth_date.to_s].present? 1180 assert p.errors[:birth_date.to_s].present?
1181 end 1181 end