내 sinatra 응용 프로그램에서 정말 이상한 문제가 발생합니다. 중요한 코드 부분은 다음과 같습니다.왜 정의 되었습니까? 상태
puts "url: #{url.inspect}"
is_music_post = nil
is_video_post = nil
is_music_post = defined?(url.music_post_id) != nil
is_video_post = defined?(url.video_post_id) != nil
puts "vid post: #{is_video_post}"
puts "music post: #{is_music_post}"
URL 개체는 mongo mapper에서 가져온 것입니다. 그들은 다음과 같이 :
obejct 1
다음#<Url _id: BSON::ObjectId('5345d525dcdda73224000240'), music_post_id: BSON::ObjectId('5345d51fdcdda7322400023d'), nice: "beat-rooftop", post_id: nil>
그것이 반환 예상대로 작동 :
vid post: false
music post: true
obejct 2
#<Url _id: BSON::ObjectId('5345d2f6dcdda732240001d8'), nice: "my-tale-boney-m-steppenwolf", post_id: nil, video_post_id: BSON::ObjectId('5345d2f6dcdda732240001d7')>
이상한 될, 나는 비디 게시물에 대한 진정한 음악 게시물에 대한 잘못된 기대,하지만 난 얻을 : 3
#<Url _id: BSON::ObjectId('5345d525dcdda73224000240'), music_post_id: BSON::ObjectId('5345d51fdcdda7322400023d'), nice: "beat-rooftop", post_id: nil>
vid post: true
music post: true
obejct 그리고 그녀는 모두 동일합니다 값이 참임
vid post: true
music post: true
WFT
내 추측은 어딘가에 뭔가 상태라고 말합니다. 어떻게 매번 다시 평가하도록 할 수 있습니까?
내 시스템
루비 -v 루비 2.0.0p353 (2013년 11월 22일 개정 43784) [x86_64에-리눅스]
내가 @iain를 잘 할 수 있다고 생각
업데이트 게으른 로딩 설명. 이것이 사실이라면이 경우 어떻게 비활성화 할 수 있습니까? 그것의 모양으로
'정의 된 (url.music_post_id)'이 당신에게 무슨 일이 일어나는지 힌트를 줄 수 있습니까? – bjhaid
사실 일 때 반환 방법이 0이고 거짓 일 때는 아무 것도 예기치 않은 것 같습니다. –
예상치 못한 일이 발생하지 않는다면 아무런 예상치 못한 질문이 – bjhaid