@Adil1 научитесь правильно задавать вопросы и не оскорблять собеседника, а так же мыслить логически. если вам нужна таблица roles, то и используйте ее - includes(:roles).references(:roles).where(roles: { id: 1 })
При перехваченом траффике вам ничего не поможет. там и логин и пароль засвятятся. И SSL не поможет если man in the middle применить. Давайте тогда еще одноразовые пароли использовать. И пофиг что клиенту будет не удобно (ваш токен который на каждый реквест разный это «прощай юзабилити», открыли ваш сайт в двух табах, на обоих разные токены, какой из них верный?)
2 slider, если у вас перехватывают трафик или сперли куки у пользователя (а куки не привязаны к IP), то никакой из вариантов не спасет, что одноразовый токен, что многоразовый.