2015-11-07 24 views
0

strong parameters要求的嵌套格式自動帶有表格,即updatecreate動作。只適用於更新/創建或所有操作的強參數

這是否意味着它只適用於這些操作,而對於其他請求,我們應該在控制器中使用普通舊params[:token]

爲什麼我問的原因是要了解我是否應該創建這樣link_to user.first_name, user_path(user: {token: user.token}) GET請求嵌套格式藏漢或者乾脆link_to user.first_name, user_path(token: user.token)

回答

1

強參數是一種安全機制,只能使用添加或更改數據的操作,特別是同時對多個屬性執行此操作的操作,因此需要命名批量分配。通常使用質量分配的典型控制器方法是創建和更新,因此這些通常是唯一需要保護的方法。我說通常是因爲您始終可以使用使用質量分配的自定義控制器方法。

質量分配是這樣的:

attrs = {:first => "John", :last => "Doe", :email => "[email protected]"} 
user = User.new(attrs) 

您現在有所有這些分配給它的屬性的用戶,這是一個方便的事情。否則,你將不得不手動執行每個屬性。問題是如果你沒有將可以通過強參數分配的屬性列入白名單,那麼有人可以操縱POST或PUT/PATCH請求來說這樣的事情。:admin => true

希望能讓它更清楚一點。

0

Strong Parameters保護屬性從終端用戶分配提供了一個界面。使用Strong Parameters動作控制器參數被禁止在活動模型中使用質量指定直到它們被列入白名單。這意味着你必須有意識地選擇哪些屬性允許批量更新,從而防止意外暴露不應該暴露的內容。

因此,這適用於createupdate操作,因爲您正在更新這兩種操作類型中的屬性。在GET請求中,您沒有更新任何屬性。所以,強參數在這些請求中不需要。

相關問題