簡體   English   中英

ActionController參數需要哈希,而不是原始哈希

[英]ActionController Parameters require a hash, not primitive

我是Ruby的新手,但我已經閱讀了數十篇文章,但最終沒有解決該問題的方法:

我正在嘗試使我的API控制器防彈。 為了驗證請求,我使用ActionController :: Parameters

例如,在我的Users API控制器中:

params.require(:user).permit(:email)

如果有人使用{"user": "abc"}調用它,則會導致錯誤和HTTP 500,這顯然是用戶不將user作為哈希傳遞的錯誤,並應導致HTTP 400:

NoMethodError in API::UsersController#update
undefined method `permit' for "abc":String Did you mean? print

如何確保我的API用戶傳遞哈希值?

您可以使用以下方法:dig(ruby 2.3):

重復檢索與每個鍵對象相對應的值對象。

http://ruby-doc.org/core-2.3.0_preview1/Hash.html#method-i-dig

所以你可以說params.dig(:user,:email)

您也可以說params [:user] .has_key?(:email),但第一個更好

另外在相關說明上,不確定是否應使用400-我認為422可能更好,因為它是422-無法處理的實體

但不重要...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM