2016-08-15 1 views
0

이 코드는 컨트롤러 (class MainController < ApplicationController)에서 온 것입니다. 콘솔에서는 puts wallMessage.messagedestinyputs current_user.id의 내용을 볼 수 있지만 다음 줄에는 값이 같은 문장이 표시되지 않습니다. 코드 : if 문이 실행되지 않은 경우레일에 문장이있는 경우

Message.each do |wallMessage| 
     puts wallMessage.messagedestiny 
     puts current_user.id 
     if wallMessage.messagedestiny == current_user.id # <-- from here don't show anything from the following content in the sentence 
      puts "*** entra en el each y devuelve el wallMessage" 
      puts wallMessage 
      @wallMessages.push(wallMessage.messagecontent) 
      User.find_by(id: wallMessage.messagesender) do |messageSender| 
      @messageSenders.push(messageSender.username) 
      end 
     end 
     end 
+0

귀하의 질문에 대한 답변을 구할 수 있습니까? 당신이 묻는 것에 관해서는 완전히 불분명합니다. –

+0

이 (가) 더 명확하게 편집 되었습니까? –

+0

'wallMessage.messagesestiny'와'current_user.id'의 결과는 무엇입니까? –

답변

1

, 그것의 명확한 값의 type이 일치하지 않는다는 것을.

직접 시도해 볼 수 있습니다.

puts wallMessage.message‌​destiny.class # displays the type of object 
puts current_user.id.class 

또는

puts wallMessage.message‌​destiny.class == current_user.id.class 

당신은 다른 값 중 하나의 type을 변환하고이를 비교할 수 있습니다.

0

해결!

if wallMessage.messagedestiny == String(current_user.id) # <-- Solution is convert to String cause current_user.id.class on console returned a BSON object 
      puts "*** entra en el each y devuelve el wallMessage" 
      puts wallMessage 
      @wallMessages.push(wallMessage.messagecontent) 
      User.find_by(id: wallMessage.messagesender) do |messageSender| 
      @messageSenders.push(messageSender.username) 
      end 
     end 
+1

'current_user.id.to_s'를 사용하여 정수를 문자열로 변환 할 수도 있습니다. 키 입력이 적습니다. –