2015-10-20 44 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 .. :):)\ –