如果句子 Rails

If sentence on Rails

此代码来自控制器(class MainController < ApplicationController)在控制台上我可以查看来自 puts wallMessage.messagedestinyputs current_user.id 的内容但在下一行中不显示句子中的任何内容值相同的地方,代码如下:

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

如果 if 语句没有被执行,很明显 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 转换为另一个值并进行比较。

已解决!

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