postgresql의 공개 스키마에 대해 완벽하게 실행되는 지연된 작업이 있습니다.
내 작업의 대부분은 그러나 다른 스키마 (각 클라이언트에 대해 하나)
지연된 작업; 필터 전에 건너 뛰는가?
내가 지시를 따랐습니다 다른 스키마를 처리하고 (응용 프로그램 컨트롤러에) 내 before_filter에서, 검색 경로를 전환하는 코드를 넣어 반대.
알아 차 렸습니다. before_filter의 코드는 일반적인 작업 중에 완벽하게 호출되지만 지연된 작업에서는 전혀 호출되지 않습니다.
제가 생각할 수있는 가장 단순한 것 이외에 모든 것을 다듬어 트리밍했습니다. 입구를 보여줍니다.
class ApplicationController < ActionController::Base
protect_from_forgery
def write_to_log(text)
File.open('c:\temp.txt', 'ab') do |f|
f.write text + "\r\n"
f.close
end
end
before_filter :on_before_filter
def on_before_filter
write_to_log('hey dave');
return if(use_token() == false);
set_active_schema if(goto_log_in? == false);
end
def run_job(id)
upload = Upload.find(id)
upload.run_job();
end
handle_asynchronously :run_job, :priority => 10, :queue => 'public'
꽤 표준 물건 작업자 클래스의 코드? 작업의 코드가 실행 되더라도 before_filter 코드는 호출되지 않습니다.
내 질문은. 내가 뭐 잘못 했어요? 또는 더 중요한 것은 어떻게하면 올바르게 할 수 있습니까?
왜 연기 된 작업이 컨트롤러에서 실행됩니까? –
Humm .. 좋은 지적. 왜 데이터베이스 필터가 컨트롤러에 있어야 할까? :) 나는 당신의 요점을 .. 어디서 U 필터 코드를 넣을까요? – baash05
주어진 current_user는 모델 범위에 포함되지 않습니다. 필터가 작동하기 전에 필터가 관련되는 곳이 이상한 선택을하는 것 같습니다. – baash05