Честно говоря, это кажется довольно незначительным, поэтому, что бы вы ни выбрали, я бы не расстроился из-за вашего подхода. Лично я бы пошел с вашим вторым вариантом (простой редирект). Прежде всего, это кажется проще, что всегда является плюсом. Если вы используете решение для аутентификации, такое как Devise, у вас, вероятно, есть помощник current_user
или user_signed_in?
, который можно легко использовать в фильтре перед фильтрацией. Во-вторых, меня не особо волнует проблема разрешения.
В каком-то смысле это проблема с разрешениями (я думаю, семантически в любом случае), поскольку ваше приложение определяет поведение, которое «не разрешено». Реально, это не разрешено, но не потому, что у пользователя нет необходимых разрешений. Причина, по которой поведение не разрешено, заключается в том, что ни один пользователь не должен иметь возможность регистрироваться как пользователь того же типа, которого он уже зарегистрировал, то есть нет типов пользователей, которые могли бы делать такие вещи, поэтому в настоящее время Заблокированные в разрешениях пользователя являются спорными. Похоже, что ваша проблема должна быть решена путем определения поведения приложения, а не прав пользователя.
Просто так, как я вижу вещи, не стесняйтесь внедрять любое решение, которое вы считаете наиболее подходящим.