[英]Ruby On Rails - Remove attribute from model
我試圖在更新對象之前從params中刪除一個屬性,但是我沒有成功做到這一點。
參數包含一個對象Post,我想從其中刪除image_url:
{
"post" : "{
\"content\" : \"dfsgdfa\",
\"created_at\" : \"2013-09-01T08:39:26Z\",
\"id\" : 21,
\"image_content_type\" : \"image/jpeg\",
\"image_file_name\" : \"img.jpg\",
\"image_file_size\" : 61140,
\"image_updated_at\" : \"2013-09-01T08:39:26Z\",
\"title\" : \"sdsdsdd\",
\"updated_at\" : \"2013-09-01T08:39:26Z\",
\"user_id\" : 4,
\"image_url\" : \"/system/posts/images/000/000/021/original/img.jpg?137802476
\"}",
"image" : "null",
"action" : "update",
"controller" : "posts",
"id" : "21"
}
所以我確實那樣:
params[:post].delete("image_url")
沒有引發任何錯誤,但是image_url仍然在params [:post]中
我如何刪除它?
在您的情況下, params[:post]
實際上是字符串。 這不是哈希。 這就是為什么它不起作用。
params [:post]不是哈希,當您通過控制器檢查它時,它將看起來像哈希。 它實際上是ActiveSupport :: HashWithIndifferentAccess實例。
您不能使用Hash#delete從哈希中刪除鍵/值對:您應該在保存回調之前編寫
def delete_image_url
params[:post].delete :image_url
end
希望對您有幫助。 我已經測試過了
您可以將子集傳遞給所需的任何函數:
@object = Foo.new(params.reject{|key,value| key == 'image_url'})
這不會將其完全從params中刪除,但是會返回沒有該鍵的副本
params ['post']。delete(“ image_url”)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.