예외가 발생했으며 그 이유를 알고 싶습니다. 누구나 테스트 할 수 있도록 git repo를 만들었습니다. 유증가 설치와ActiveRecord :: RecordNotUnique가 등록에서 발생했습니다. # 왜 생성합니까?
레일 애플 리케이션은 신선합니다. 나는이 예외가 아닌 검증 오류가 발생하는 이유
An ActiveRecord::RecordNotUnique occurred in registrations#create:
Mysql2::Error: Duplicate entry '[email protected]' for key 'index_users_on_email': INSERT INTO `users` (`authentication_token`, `confirmation_sent_at`, `confirmation_token`, `confirmed_at`, `created_at`, `current_sign_in_at`, `current_sign_in_ip`, `email`, `encrypted_password`, `failed_attempts`, `last_sign_in_at`, `last_sign_in_ip`, `locked_at`, `remember_created_at`, `reset_password_sent_at`, `reset_password_token`, `sign_in_count`, `unconfirmed_email`, `unlock_token`, `updated_at`) VALUES (NULL, '2013-01-24 16:48:23', 'GQwbJzsawxRsbvhp1LkR', NULL, '2013-01-24 16:48:23', NULL, NULL, '[email protected]', '$2a$10$koMNiiZQuhkeWhmYV8PtcOUlvi6rZHTKMs82MGWNa2M/GsUQ0cIHO', 0, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, '2013-01-24 16:48:23')
activerecord (3.2.11) lib/active_record/connection_adapters/abstract_mysql_adapter.rb:245:in `query'
:
1000.times do
fork do
`curl -d "user[email][email protected]&user[password]=pwd&user[password_confirmation]=pwd" localhost:3000/users`
end
end
내가 후속 예외를 얻을 : 응용 프로그램과 동일한 사용자를 만들려고이 스크립트를 실행
? "http : // localhost : 3000/users/sign_up"웹 페이지에서 이미 사용 된 전자 메일을 사용하여 사용자를 만들려고하면 예외가 발생하지만 유효성 검사 오류가 발생합니다.
포크없이 스크립트 (요청 순차적입니다), 나는 아무런 오류가 발생합니다.
경쟁 조건 문제가있는 것 같습니다.
사용자 이메일은 고유해야합니다. https://github.com/pioz/test_duplicate_entry/blob/master/db/schema.rb#L41 – Ken
git repo https://github.com/pioz/test_duplicate_entry – Pioz
유효성 검사는 Devise gem에 포함되어 있습니다. – Pioz