В нашем приложении Rails 4.2 есть модель payment_request.rb
, и мы хотели бы заставить ее перезагрузить before_action
в своем контроллере payment_requests_controller.rb
. Есть ли способ перезагрузки?Rails 4.2: Как заставить перезагрузить определение модели?
ответ
@Mariah предложил вам способ перезагрузить экземпляр класса модели, но в случае, если ваше намерение было действительно перезагружать определение класса, вы могли бы сделать это с этим трюком:
before_action :reload_model
def reload_model
Object.send(:remove_const, :PaymentRequest)
load 'app/models/payment_request.rb'
end
Остерегайтесь побочных эффектов, таких как невозможность получить доступ к PaymentRequest
из других частей того же экземпляра вашего приложения во время этого класса, перезагружается. На самом деле я сомневаюсь, что делать это в коде контроллера правильно.
Перезагрузка класса может быть полезна при обновлении некоторого постоянного значения (поскольку оно заполняется при загрузке первого класса и изменяется во время). Но в случае, если такая ситуация возникает во время вашего приложения в прямом эфире, вам лучше рассмотреть возможность изменения решения на основе констант на что-то более подходящее.
Вы хотите, чтобы модель перезаряжалась, когда? Не знаете, почему вы хотите перезагрузить файл before_action, вы можете просто просто вызвать «@ payment_request.reload» любым способом.
Если вы хотите, чтобы это было сделано раньше, вам нужно добавить это before_action в свой контроллер. вам также необходимо определить функцию, которую он вызывает. Например,
before_action :reload
def reload
@payment_request.reload
end
Мы ищем перезагрузку определения класса. – user938363
- 1. Rails 4.2: Как принудительно перезагрузить (двигатель) маршрут?
- 2. Как заставить ActiveRecord перезагрузить класс?
- 3. Как заставить WebImageView перезагрузить?
- 4. Как заставить перезагрузить страницу
- 5. Ruby on Rails - Определение модели?
- 6. Определение методов модели в Rails
- 7. Как заставить Карму перезагрузить HTTP-службу javascript?
- 8. Резервные переменные модели кэширования - как «принудительно перезагрузить»?
- 9. Как заставить Meteor перезагрузить подписки?
- 10. Как заставить IE перезагрузить javascript?
- 11. Как заставить Chrome перезагрузить ресурс?
- 12. Rails: определение типа модели в коллекции присоединился
- 13. Rails - определение полей данных в самой модели
- 14. Rails - Динамически определение методов экземпляра в модели
- 15. Определение модели Rails с использованием соответствующего поля
- 16. Ember перезагрузить разгружаются модели
- 17. Как перезагрузить schema.rb в приложении rails?
- 18. Как перезагрузить модель в консоли rails?
- 19. Python: заставить каждый импорт перезагрузить
- 20. Rails 4.2 отношения модели has_many сгенерированные вспомогательные методы для объектов
- 21. Как заставить перезагрузить json на tomcat
- 22. Как заставить браузер перезагрузить h: ресурс outputScript?
- 23. Как заставить Emacs перезагрузить файл TAGS автоматически?
- 24. Как заставить родительский контроллер перезагрузить данные?
- 25. Как заставить powershell перезагрузить пользовательский модуль?
- 26. Как заставить SciTE перезагрузить файл автоматически?
- 27. Как заставить браузер перезагрузить обновленный XML-файл?
- 28. Как заставить ListBox перезагрузить свойства ListBoxItems
- 29. Как заставить Chrome перезагрузить исходные карты?
- 30. Rails 4.2: После ручной смены названия модели сервер Rails жалуется на помощников для старой модели
'невозможность доступа к PaymentRequest из других частей одного и того же экземпляра вашего приложения' - будут ли другие пользователи затронуты перезагрузкой? Наше приложение - многопользовательский. – user938363
@ user938363 Я полагаю, что это зависит от способа размещения вашего приложения (потоков, процессов, веб-сервера и сервера приложений и т. Д.) И использования. Я не уверен, что именно вы подразумеваете под действием мутантов, но вы определенно рискуете. Если есть другие способы помимо перезагрузки класса, я бы предложил их использовать. – twonegatives