2014-11-21 27 views
0

我試圖將avatar_id設置爲無記錄,它與我當前記錄self.avatar_id相同,並且是相同類型。查找具有相同值的記錄,並將它們設置爲零

class AvatarPart < ActiveRecord::Base 
    before_save :clear_avatar_body 

    def clear_avatar_body 
    used = AvatarPart.where(ap_type: self.ap_type, avatar_id: self.avatar_id).first 
    if used 
     used.avatar_id = nil 
     used.save 
    end 
    end 
end 

在rails控制檯中的類似的解決方案工作正常。但在模型中,它並沒有做任何事情,也沒有做過類似的事情。每個解決方案都以無限循環結束。 我應該將其移至控制器嗎?

回答

3

您是否嘗試過update_all。像這樣的東西

AvatarPart.where(ap_type: self.ap_type, avatar_id: self.avatar_id).update_all(avatar_id: nil) 
+0

同樣的事情。其他記錄不會更新。 – 2014-11-21 11:52:06

+0

我在控制檯順便測試這個。 – 2014-11-21 11:53:15

+0

將此與before_save結合使用!編輯:cahgned問題before_save – 2014-11-21 11:58:53

相關問題