Я хочу реализовать авторизацию в своем приложении Rails на уровне модели (не на контроллере), аналогично тому, как выполняется проверка на моделях. Каков наилучший способ сделать это?
Если это реализовано в самих моделях, основная проблема заключается в том, что модели не имеют доступа к текущему пользователю. Я видел такие решения: Thread.current[:user_id] = session[:user_id]
, но это не очень хорошая идея.
Я видел другой подход, в котором создаются варианты таких методов, как create, find и new, с дополнительным параметром для текущего пользователя.
Другой подход заключается в реализации всех методов класса User / role, поэтому, например, user.posts.create
или user.readable_posts.find
будет использоваться вместо Post.create
или Post.find
.
Какой из этих подходов будет предложен? Есть ли лучшие способы для осуществления авторизации? Есть ли плагины, которые делают это проще? Мне нужен подход, который хорошо подходит для нескольких ролей и моделей.