JSON参数以空字符串形式发送,而不是规范中的nil

时间:2019-11-21 16:41:04

标签: ruby-on-rails ruby-on-rails-5 rspec-rails

将应用程序从Rails 4转换为Rails5。一切似乎都进行得很好,尽管看起来这行引起了问题。在Rails 4中,它是:

get :show, token: user.token, email: user.email

在Rails 5中,语法为:

get :show, params: { token: user.token, email: user.email }, format: :json

在这种情况下,问题是user.tokennil。在Rails 4下,控制器收到的参数如下:

{"token"=>nil, "email"=>"johndoe1@...", "action"=>"show"}

在Rails 5中,由于token的接收方式为:

{"token"=>"", "email"=>"johndoe1@...", "action"=>"show"}

如何让Rails 5尊重它是null而不是一个空字符串?

我不知道这是否会影响规范之外的get,但我找不到任何解决方案。我尝试了as: :jsonformat: :json,甚至to_json,也没有尝试。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以检查#blank?。 Nil将返回true,而空字符串将返回