簡體   English   中英

Ruby On Rails-從模型中刪除屬性

[英]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.

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