:dependent => :destroy为序列化数组值

时间:2015-10-20 11:01:09

标签: ruby-on-rails serialization

我有两个型号,

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

class User < ActiveRecord::Base

end

假设,事件模型中的user_ids具有值[1,2,3,4]。

现在,如果我删除ID为1的用户记录。

它还必须删除驻留在事件表的user_ids字段中的user_id。结果应为user_ids = [2,3,4]。喜欢:dependent =&gt; :破坏。

我是否需要为此确定必须编写before_destroy回调.. ??或任何其他解决方案?

1 个答案:

答案 0 :(得分:1)

是的,正如你的建议,你将不得不在你自己写的回调中做到这一点。类似的东西:

before_destroy :remove_users

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

虽然看起来确实很具破坏性。通常User用于登录系统的用户,但我猜你在这种情况下没有使用它。