Ruby on Rails – кеширование классов?
-
19-09-2019 - |
Вопрос
Я прочитал статью здесь и я использовал найденные там принципы, чтобы написать административную проверку для своих контроллеров.По сути, он проверяет, в каком контроллере вы находитесь, а затем я создаю массив, говорящий, может ли этот человек получить разрешение на просмотр этого контроллера, чем найти, передать его.
Автор статьи сказал, что читателям не следует использовать пример кода, поскольку он несовершенен, и что им следует использовать его плагин (который, конечно, уже устарел).И сказал он
«Есть некоторые проблемы с приведенным выше кодом при работе в производственном режиме из-за использования переменных класса и кэширования классов».
У меня произошел сбой теста, и я думаю, что это может быть из-за этого, но я не совсем уверен, какую часть кода мне не следует использовать.У меня было следующее (в application.rb):
controller = params[:controller]
action = params[:action]
Но я изменил это на:
controller = self.class.name
action = params[:action]
Как правильно получить доступ к имени действия?И вообще, что вы можете делать в режиме разработки, чего нельзя делать в режиме производства?
Решение
Рассматривали ли вы вместо этого плагин разрешений на основе ролей?См. следующий вопрос stackoverflow:
Мне не известно о каких-либо проблемах с использованием вставленного вами кода в рабочей среде.Рассматриваемый плагин может иметь некоторые проблемы из-за возможного неправильного использования @@, однако я не проверял его тщательно.