Исходный файл Rails выходит из цикла, создавая меньше указанных пользователей

У меня есть начальный файл в приложении rails 3.2.2, которое создает пользователей для тестирования макета и форм сайта. Он должен сгенерировать одного администратора и 10 пользователей, но он создает только администратора и 2 пользователей без каких-либо объяснений, почему он останавливается. Он не выдает исключений, и все выглядит нормально, пока я не проверю базу данных.

вот код

require 'faker'

# Create an Admin user to test the site with
Admin.create first_name: "Admin",
         last_name: "User",
         email: "[email protected]",
         password: "foobarbaz",
         password_confirmation: "foobarbaz"

# Generate 10 users to test with
10.times do
  student_address = { street: Faker::Address.street_address,
                  city: Faker::Address.city,
                  state: Faker::Address.us_state_abbr,
                  zipcode: Faker::Address.zip_code }
  first_name = Faker::Name.first_name
  last_name = Faker::Name.last_name

  Student.create first_name: first_name,
             last_name: last_name,
             email: "#{first_name}.#{last_name}@example.com",
             student_id: rand(10 ** 6).to_s.rjust(6,'0'),
             address_attributes: student_address,
             phone_number: Faker::PhoneNumber.phone_number,
             password: "foobar",
             password_confirmation: "foobar"
end

person Rostepher    schedule 13.06.2012    source источник


Ответы (1)


Если вы хотите, чтобы create или update_attributes вызывали исключение для недопустимых записей, вам нужно использовать соответствующие версии «bang».

Student.create!
person Salil    schedule 13.06.2012
comment
Спасибо, создание взрыва помогло мне точно определить проблему. Faker генерирует почтовый индекс и номера телефонов по-разному для каждого нового пользователя, и иногда у них есть дополнительный номер или более длинная версия почтового индекса. Я изменил его, чтобы удалить все нецелые символы и выбрать только первые 5 или 10 цифр с диапазоном. - person Rostepher; 13.06.2012
comment
Спасибо за точное описание проблемы. Это поможет будущим зрителям. - person Salil; 14.06.2012