2012-02-09 108 views
0

例如。我可以在不刪除任何屬性的情況下刪除對象嗎?

post = Post.first 

post.image_path #(this is a image path like http://localhost:3000/uploads/image/sd54asdf.jpg) 

,如果我這樣做:

post.destroy 

有了這個,我從毀滅後對象中的每個屬性,包括圖像。

我可以在不刪除圖像的情況下刪除對象嗎?

誰能告訴我這是否可能?

用這種方法,我檢查是否是圖像引用的最後一個對象。

def validates_image_dependents 
    post = self.find(params[:id]) 
    i=0 
    for this_post in Post.all 
    if this_post.posted_filename == post.post_filename 
    i+=1 
    end 
    end 
return i > 1 
end 
+0

如果發佈has_one圖像,然後使用刪除而不是銷燬將完成這項工作。 – 2012-02-09 10:51:32

+0

謝謝@AlokSwain,你能幫我一個例子嗎?謝謝:D – hyperrjas 2012-02-09 11:00:46

+0

隨着刪除方法不刪除圖像,它確實工作正常。這是對的?謝謝你@AlokSwain – hyperrjas 2012-02-09 12:01:59

回答

1

調用銷燬記錄將刪除與該記錄相關的所有數據。我認爲,你有3種選擇:

  1. 使包含有關圖像的信息,並沒有設置滑軌刪除相關記錄時
  2. 我懷疑這更像是一個帖子被刪除相關的對象是什麼你試圖達到 - 而不是銷燬你可能仍然需要引用的對象,更新Post模型有一個布爾值來跟蹤記錄是否被「刪除」,然後用它來檢索活動的帖子。這是軟刪除,非常普遍,複雜的關聯使它很難完全刪除記錄
  3. 設置的破壞行動,建立某種形式的歸檔後的記錄,你可以用它來訪問你仍然需要
屬性

我喜歡選項2,但它取決於你想要達到的目標。

+0

我有很多對象與CarrierWave共享相同的圖像。我的問題是,我想要只刪除圖像如果是最後一個對象或使用此圖像的唯一性,但如果我有2個或更多對象具有相同的圖像我不想刪除圖像 – hyperrjas 2012-02-09 10:52:33

+0

然後,我認爲你一定需要分開你的圖像我不確定關聯的依賴選項是否可以實現你所需要的,或者你是否需要在Post上設置after_destroy回調來手動檢查圖像是否需要刪除 – Nick 2012-02-09 11:15:46

+0

非常感謝Nick,但我怎麼可以檢查回調'after_destroy:validates_image_dependents'圖像還沒有被刪除,這取決於此方法返回true或false。 – hyperrjas 2012-02-09 11:20:54

相關問題