Ну, я имею в виду чтобы у меня в таблице лежал только один актуальный токен, вместо двух. Я думал над тем чтобы бы сделать belongs_to вместо has_many, но там также гонки могут возникать по-идее
Я так вижу себе проблему и в зависимости от того что требуется два похожих вариант решения.
1. у пользователя несколько актуальнуых токенов (одновременно две (или более) сессии могут быть активны). Тогда user has many token. В таблице tokens не уникальный индекс на user_id (для ускорения выборки) и отдельный уникальный индекс на токен (токен же должны быть уникальный среди всех пользоватлей?)
2. У пользователя может быть только один актуальнй токен (одновременно у пользователя может быть только одна активная сессия). Тогда user has one token. Уникальный индекс на user_id и отдельный уникальный индекс на токен.