2013-03-06 53 views
2

我一直在使用strong_parameters gem與Rails 3.2相當長一段時間。到目前爲止,一切都很好。如何在rails 3.2上的strong_parameters更新之後更新嵌套對象?

將strong_parameters最近更新爲v0.2.0之後,我不再可以更新嵌套對象。

這裏是請求參數

{ 
    "resource"=>{ 
    "name"=>"1362483207-11-offer", 
    "slug"=>"1362483207-11-offer", 
    "code"=>"136248320711", 
    "category_id"=>"4", 
    "price"=>"100", 
    "short_description"=>"", 
    "description"=>"", 
    "offer_card_types_attributes"=>{ 
     "0"=>{"id"=>"11", "card_type_id"=>"1"}, 
     "1"=>{"card_type_id"=>"0"}, 
     "2"=>{"card_type_id"=>"0"}, 
     "3"=>{"card_type_id"=>"0"} 
    }, 
    "show_banner"=>"1", 
    "autoclaim"=>"1", 
    "published"=>"0", 
    "number_of_codes_to_generate"=>"", 
    "images_attributes"=>{ 
     "0"=>{"retained_image"=>"", "_destroy"=>"true", "id"=>"1"}, 
     "on-1362560061857"=>{ 
     "image"=>#<ActionDispatch::Http::UploadedFile:0x0000080ef654f8 ... > 
     } 
    }, 

    "partner_id"=>"2", 
    "all_checkout_places"=>"0", 
    "offer_checkout_places_attributes"=>{ 
     "0"=>{"checkout_place_id"=>"0"}, 
     "1"=>{"id"=>"11", "checkout_place_id"=>"7"}, 
     "2"=>{"checkout_place_id"=>"0"}, 
     "3"=>{"checkout_place_id"=>"0"}, 
     "4"=>{"checkout_place_id"=>"0"} 
    } 
    }, 
    "id"=>"11" 
} 

我已經試過這PARAMS而params這一點。我只是不更新​​嵌套的對象。 請幫忙

起初我以爲params.require(:resource).permti(..., :images => [])應該做的伎倆,但它失敗了,然後我嘗試了其他各種選擇。他們都失敗了。

我如何允許所有這些嵌套的對象。

+0

你可以把你的模型代碼?它可能是一個大規模分配問題(attr_accessible) – rorra 2013-03-06 09:49:52

+0

attr_accessible不是問題。其實我不用它 '''config.active_record.whitelist_attributes = false''' – graudeejs 2013-03-06 10:51:33

回答

0

您是否檢查日誌?嵌套屬性的關鍵將是images_attributes,而不是images。這就是你需要通過permit()方法來使其工作。

+0

我試過了。它不起作用。顯然這個問題沒有解決: https://github.com/rails/strong_parameters/pull/121#issuecomment-15469655 和其他問題 – graudeejs 2013-03-26 18:19:04