2016-06-10 88 views
0

我向服務器請求使用JSON這樣只需要設置參數嵌套軌

{"user" : { "name" : "name", "email" : "email", "password":"pswd"}} 

所以我想只能接受這種格式Jsons。 我做了這個:

params.require(:user).permit(:name, :email, :password) 

但是,這並不工作,我可以給更多的參數。我只想收到該格式或其他,它會給出錯誤。

謝謝!

編輯: 我使用卡洛斯拉米雷斯三世的答案,因爲沒有收到比必要更多的數據,但現在我收到的數據比必要的少。 這應該在數據庫還是接收參數上實現?

再次感謝!

回答

1

Rails的強大參數可以作爲白名單,這意味着您指定的屬性將是唯一被考慮的屬性(任何額外的參數將被丟棄)。

如果您擔心正在處理的額外參數導致數據不正確,那麼您擁有的就已經處理好了。

如果你必須如果有任何額外的參數發送錯誤,你需要自己手動編碼。

E.g.

extra_params = params.keys - [:name, :email, :password] 
if extra_params.size != 0 
    # raise an error here in whatever way you wish 
    raise "Invalid parameters: #{extra_params}" 
end 
+0

這就是我所需要的人!謝謝! –