rails 3 - 删除所有相关记录给用户 - 阻止orpahn数据

Fin*_*nnn 1 ruby-on-rails ruby-on-rails-3

我有一个简单的博客风格系统,用户可以拥有许多条目.

我试图通过执行以下操作删除所有用户条目 -

user = User.find_by_id(1)
user.entries.delete_all
Run Code Online (Sandbox Code Playgroud)

这没有成功删除相关条目,它只是将该条目中的user_id设置为nil -

<Entry id: 20, content: "test", user_id: nil, created_at: "2011-10-31 10:26:18", updated_at: "2011-10-31 10:26:18", attachment_id: nil, likes_count: nil, comments_count: nil> 
Run Code Online (Sandbox Code Playgroud)

一些问题,如果你不介意 -

如何确保删除所有没有所有者的条目,并删除其相关信息?基于上面的例子 - 我想删除条目及其相关注释

如何最初避免这个问题?我认为我的user.entries.delete_all命令是错误的.

Mar*_*sen 7

你知道destroydeleteRails 之间的区别吗?如果您使用destroyRails将首先实例化要删除的记录,并调用与destroy(关联之前,之后,周围和级联)相关的所有回调.因此,你可以创建一个after_destroy回调来销毁所有与用户相关的数据,条目等,或者你声明你的has_many关系:dependent => :destroy,它自动添加一个回调来销毁所有相关的项目