Я новичок в области относительных рельсов, только начинаю изучать, как СУШИТЬ мой код, и не уверен, нужно ли мне создавать помощник, или декоратор, или метод модели, или какой-то класс перегрузки, чтобы сделать что-то очень часто "этот пользователь имеет доступ к этим данным?" проверка ....
Мое приложение rails 3.1 использует devise для аутентификации пользователей, и я (в соответствии с документами devise) добавил простой admin: логический флаг, который позволяет определенным пользователям делать то, что другие пользователи не могут (например, просматривать / редактировать профиль других пользователей)
для предотвращения подмены URL и т. Д. Я использую это в верхней части много моих методов:
if current_user.nil?
redirect_to root_path, :alert => "You must sign in to do XXXX" and return
end
if !current_user.admin? && (current_user.id != MYMODEL.user_id)
redirect_to MYMODEL_path, :alert => "The ZZZZ you tried to XXXXX is not yours" and return
end
if current_user.admin? && (current_user.id != MYMODEL.user_id)
flash[:alert] = "Hey ADMIN: You know you are XXXX another user's ZZZZ, right?"
end
Сообщение в каждом случае отличается, но логика одинакова.
Может ли кто-нибудь показать мне самый простой способ разместить эту логику в одном месте (для одного контроллера), чтобы все методы в контроллере могли использовать ее (опционально), передавая 3 пользовательских сообщения?