2016-12-05 2 views
1

모델 테이블에서 열을 제거한 후 PaperTrail 버전을 수정하려고 할 때 문제가 발생합니다. private method 'warn' called for nil:NilClassPaperTrail 로거는 어떻게 설정합니까?

을하고 reify 방법의 내부의 다음 줄에 나 포인트 :

스택 트레이스가 시작

나는 테이블에서 열을 제거했기 때문에
# Set all the attributes in this version on the model. 
attrs.each do |k, v| 
    if model.has_attribute?(k) 
    model[k.to_sym] = v 
    elsif model.respond_to?("#{k}=") 
    model.send("#{k}=", v) 
    else 
    logger.warn "Attribute #{k} does not exist on #{item_type} (Version id: #{id})." 
    end 
end 

, 내가 else 블록에 착륙하고있다 논리 트리가 완벽하게 합리적인 것처럼 보입니다.

그러나 나는 왜 loggernil인지 이해하지 못합니다. PaperTrail 로거를 어디서 어떻게 설정할 수 있습니까? 그러면 응용 프로그램이 충돌하지 않고 단순히 동작을 기록 할 수 있습니까?

답변

0

이 작업을 수행하는 방법은 두 가지입니다. (당신이보다 뭔가 로그 수준을 지정할 수 있습니다, 그래서 분명히이 모든 모델에 영향을주는 초기화에 액티브 :: 자료의 로거를 설정하여 PaperTrail::Version 클래스

2

module PaperTrail 
    class Version < ActiveRecord::Base 
    include PaperTrail::VersionConcern 

    def logger 
     Logger.new(STDOUT) 
    end 

    end 
end 
를) 덮어 쓰기하여

1) 디버그) : 거기에 또 다른 추천 방법이지만이 지금 내 목적을 위해 작동하는 것처럼 보일 경우

ActiveRecord::Base.logger = Logger.new(STDOUT) 
ActiveRecord::Base.logger.level = Logger::INFO 

있어요.