Se você estiver usando índices exclusivos do banco de dados (e deveria!), Você pode acabar tendo que lidar com ActiveRecord :: RecordNotUnique por causa das condições de corrida do banco de dados.
Para resgatar de tais exceções, você pode usar o método Ruby de repetição:
def self.set_flag( user_id, flag )
# Making sure we only retry 2 times
tries ||= 2
flag = UserResourceFlag.where( :user_id => user_id , :flag => flag).first_or_create!
rescue ActiveRecord::RecordNotUnique
retry unless (tries -= 1).zero?
end