Я следую этому учебнику, http://ruby.railstutorial.org/chapters/modeling-users?version=3.2#top, который мне очень нравится, но в нем упоминается что-то о атрибуте уникальности, которого я не получаю. Это мю пользовательский файл до сих пор:Ruby Tutorial и «уникальность»
class User < ActiveRecord::Base
#these attributes can be modified by the users
attr_accessible :name, :email;
#validation testing
validates :name, presence: true, length: { maximum: 50 }
#regular expression (there is an official one)
VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i
#and add it..
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
end
Он говорит:
"Использование Подтверждает:. Уникальность не гарантирует уникальность
Алиса случайно нажмет на„Отправить“дважды, отправляя два запроса в быстрая последовательность. Выполняется следующая последовательность: запрос 1 создает пользователя в памяти, который проходит проверку, запрос 2 делает то же самое, запрос пользователя 1 сохраняется, запрос пользователя 2 сохраняется. Результат: две записи пользователя с одинаковым адресом электронной почты , несмотря на uniquenes s валидация ".
Я попытался создать 2 пользователей с тем же адресом электронной почты, используя консоль (и метод User.create), и уникальность, казалось, сработала, поскольку только первый из них попал в sqlite3. Итак, что может привести к ошибке или уникальности?
C-Ruby (MRI и YARV) не использует собственные потоки, кроме зеленых потоков. Альтернативные реализации, такие как JRuby или Rubinius, используют собственные потоки. Однако оба типа могут наблюдать состояние гонки в одном процессе. –