Commit caa8090addbabb07f9287b90fa0f85e791cb7ed6

Authored by Victor Costa
1 parent 8e1cd3f7

rails3: fix birthday validation

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 &lt; 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 &lt; 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
... ...