2015-05-23 1 views
0

Я имею следовать за strong_params заявление:strong_params удаление идентификатор accepts_nested_attributes_for моделей

def product_grid_params 
    params.require(:product_grid).permit(:name, 
     product_grid_locations_attributes: [:id, :grid_index, :item_id, :item_type, :short_name, :long_name] 
    ).merge({ venue_id: params[:venue_id] }) 
    end 

Но мои Титулы и product_grid_params выглядеть следующим образом:

(byebug) params 
{"product_grid"=>{"product_grid_locations_attributes"=>[{"id"=>"5560d1f7a15a416719000007", "short_name"=>"shrt", "long_name"=>"Whiskey Ginger", "grid_index"=>73, "item_type"=>"product", "item_id"=>"9b97aa28-1349-4f60-a359-3907c8ac9a74"}]}, "id"=>"5560d1f7a15a416719000006", "venue_id"=>"5560d1f7a15a416719000005", "format"=>"json", "controller"=>"api/v2/manager/product_grids", "action"=>"update"} 
(byebug) product_grid_params 
{"product_grid_locations_attributes"=>[{"grid_index"=>73, "item_id"=>"9b97aa28-1349-4f60-a359-3907c8ac9a74", "item_type"=>"product", "short_name"=>"shrt", "long_name"=>"Whiskey Ginger"}], "venue_id"=>"5560d1f7a15a416719000005"} 

Вы заметите, что в Params, то product_grid_location Идентификатор пользователя присутствует, но он отфильтровывается в product_grid_params. Что дает? Мне нужен этот идентификатор для обновления вложенных атрибутов.

+0

Возможно, вы должны добавить языковой тег. – assylias

ответ

0

Похоже, это было из-за проблемы с монгоидом. Идентификатор, который я проходил, был Moped::BSON::ObjectId, который strong_params отказался разбирать. Я преобразовал его в строку и все было хорошо после этого:

params[:product_grid][:product_grid_locations_attributes].each { |location| location[:id] = location[:id].to_str }