2011-09-04 3 views
2

ID가 1로 설정되어 있고 코드베이스에서 알 수없는 소스가 임의로 설정되어 있습니다. 학교가 속한 사용자의 업데이트 속성에있을 수 있습니다.ID가 신비하게 1의 ID로 설정되었습니다.

어떻게 이런 일이 발생했을 때 오류를 발생 시키거나 기록 할 수 있습니까?이를 추적하여 해결할 수 있습니까?

다음은 첫 번째 시도하지만 계정 관찰자가 당신을 위해이 작업을 수행 할 수 update_attributes

belongs_to :foo_school, :foreign_key => 'school_id' 

def foo_school=(foo_school) 
    begin 
    raise "Found" if foo_school == FooSchool.find(1) 
    rescue Exception => e 
    # Track it down through the stack trace 
    Rails.logger.error e 
    ensure 
    write_attribute(:foo_school, foo_school) 
    end 
end 
+0

스택 트레이스? 전체 코드? foo_school에는 무엇이 포함되어 있습니까? 이 많은 정보로 여기서 일어나는 일을 이해하는 것은 정말로 어렵습니다. –

+0

FooSchool에 속하는 모델의 범위 내에 있습니다. id가 아닌 FooSchool에 포함 된 내용은 중요하지 않습니다. 관련 모델 인 FooSchool가 id가 1로 업데이트되면 오류 만 발생합니다. – maletor

답변

2

고려하지 않는 것 같습니다. 이 관찰자와 함께하는 일은 당신에게 달려 있습니다.

$ rails g observer Oddity

config/application.rb이 추가 (즉, 파일에서 "관찰자"에 대한 검색 기본적으로 예를 들어있다). config.active_record.observers = :oddity_observer

class OddityObserver < ActiveRecord::Observer 
    observe :foo 

    def after_update(record) 
    raise "Boom" if record.id == 1 
    end 
end