簡體   English   中英

Rails,強參數和復雜的數據結構

[英]Rails, strong parameters, and complex data structures

太后了,SO伙計們

我強烈參數化我們計划升級到Rails 4的Rails 3應用程序。一些控制器使用params對象不僅保存嵌套哈希,而且保持數組內哈希內的數組中的哈希等。改變數據結構的性質太強烈了,我們希望理想情況下它返回相同的數據結構,但參數化程度很高

這是一個JSON的例子:

"my_example" => {
  "options" =>
   [{"id" => "1"
     "name" => "claire"
     "keywords" => 
       ["foo", "bar"]
     },
    {"id" => "2",
      "name" => "marie",
      "keywords => 
        ["baz"]
    }],
    "wut" => "I know, right?"
}

但為了增加樂趣, keywords數組可以包含任何字符串。 我已經讀到了哪些,哪些是棘手的,並支持其他版本的rails,但無論如何。

有關使用strong_parameters gem制作復雜數據結構的一般經驗法則嗎? 我知道Rails 4和5處理得更好,但我很好奇。

嵌套參數並不是那么具有挑戰性。

params.require(:my_example)
      .permit(:wutz, options: [:id, :name, keywords: []])

這需要options是一組資源,其中鍵:id,:name和:關鍵字將列入白名單。

:wutz, :id, :name可以是任何允許的標量類型。 keywords: []允許任何標量類型的數組(任何字符串,整數,日期等)。 我真的不明白你為什么在這里煩惱。

問題主要在於具有極其動態內容的嵌套哈希。 在那種情況下,你可以使用的Rails強參數沒有完全覆蓋.permit! 並釋放Ruby散列切片和切割的完整工具,這些工具非常強大。

寶石幾乎在后續版本的Rails中向后移動了ActionController::Parameters的api,所以在升級時我不會指望任何重大的hickup。

https://github.com/rails/strong_parameters#nested-parameters

暫無
暫無

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

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