2015-10-20 42 views
0

我有兩種型號,:依賴=>:破壞用於序列化數組值

class Event < ActiveRecord::Base 
    serialize :user_ids, Array 
end 

class User < ActiveRecord::Base 

end 

假設,在事件模型user_ids具有值[1,2,3, 4]。

現在,如果我刪除用戶記錄ID爲1

它也有刪除USER_ID居住在事件表的user_ids場。結果應該是user_ids = [2,3,4]。像:dependent =>:destroy。

我是否需要爲此編寫before_destroy回調?或任何其他解決方案?

回答

1

是的,正如你所建議的那樣,你將不得不在你自己寫的回調中這樣做。例如:

before_destroy :remove_users 

def remove_users 
    User.where(id: self.user_ids).destroy_all 
end 

雖然它看起來很破壞性。通常User用於登錄到您的系統的用戶,但我想你在這種情況下並未使用它。

+0

謝謝@shadwell。,但有沒有其他最簡單的解決方案,如:依賴=>:破壞而不是寫我們自己的方法,這種情況..?對不起,這個愚蠢的問題。 :P:P –

+0

不,不幸的是,你將不得不在自己的代碼上編寫自己的代碼 - 這不是由rails/active record支持的情況。 – Shadwell

+0

Cool .. Thnaks .. :):)\ –