2016-03-23 3 views

ответ

1

@Mariah предложил вам способ перезагрузить экземпляр класса модели, но в случае, если ваше намерение было действительно перезагружать определение класса, вы могли бы сделать это с этим трюком:

before_action :reload_model 

def reload_model 
    Object.send(:remove_const, :PaymentRequest) 
    load 'app/models/payment_request.rb' 
end 

Остерегайтесь побочных эффектов, таких как невозможность получить доступ к PaymentRequest из других частей того же экземпляра вашего приложения во время этого класса, перезагружается. На самом деле я сомневаюсь, что делать это в коде контроллера правильно.

Перезагрузка класса может быть полезна при обновлении некоторого постоянного значения (поскольку оно заполняется при загрузке первого класса и изменяется во время). Но в случае, если такая ситуация возникает во время вашего приложения в прямом эфире, вам лучше рассмотреть возможность изменения решения на основе констант на что-то более подходящее.

+0

'невозможность доступа к PaymentRequest из других частей одного и того же экземпляра вашего приложения' - будут ли другие пользователи затронуты перезагрузкой? Наше приложение - многопользовательский. – user938363

+0

@ user938363 Я полагаю, что это зависит от способа размещения вашего приложения (потоков, процессов, веб-сервера и сервера приложений и т. Д.) И использования. Я не уверен, что именно вы подразумеваете под действием мутантов, но вы определенно рискуете. Если есть другие способы помимо перезагрузки класса, я бы предложил их использовать. – twonegatives

1

Вы хотите, чтобы модель перезаряжалась, когда? Не знаете, почему вы хотите перезагрузить файл before_action, вы можете просто просто вызвать «@ payment_request.reload» любым способом.

Если вы хотите, чтобы это было сделано раньше, вам нужно добавить это before_action в свой контроллер. вам также необходимо определить функцию, которую он вызывает. Например,

before_action :reload 

def reload 
    @payment_request.reload 
end 
+0

Мы ищем перезагрузку определения класса. – user938363

Смежные вопросы