Rails:删除用户而不会丢失关联(或让用户离开的其他方法)

slh*_*hck 3 ruby-on-rails user-management cascading-deletes

我有一个Rails应用程序,允许用户创建各种"判断",一切都有点交织,我们有几个连接到User类的类.

当我让用户"销毁"他们的帐户时,显然他们拥有的关联会给我一个nil对象.因此,例如,当我遍历所有判断时,如果该特定用户删除(销毁)他们的帐户,我就无法得到创建判断的用户.

  • Rails中针对此类案例的最佳做法是什么?
  • 是否可以将用户标记为非活动状态,但仍保留其帐户?
  • 我可以删除用户帐户并替换其他类中的相关信息吗?

Pan*_*kos 8

这完全取决于您和最适合您的应用程序.这并不是Rails标准与Web标准的关系.如果您删除了自己的帐户并且您是应用程序的用户,您会发生什么?这里有几个选项:

  • 将帐户标记为非活动状态,保留用户名和最小配置文件.
  • 删除用户的帐户,但将所有相关对象与"匿名"或"已删除用户"帐户相关联.
  • 删除所有相关信息.

请注意,您选择继续操作的方式还取决于用户在使用网站时必须同意的服务条款.如果您有权保留其内容,则可以保留相关信息,但删除其姓名和私人信息可能是个好主意.最好向律师咨询实际可以保留的数据量.如果您对数据有免费统治,我会说让您的用户满意.

  • 我刚刚写了几乎相同的答案,但你打败了我!:P我所拥有的只是[一堆插件](http://www.railsinside.com/plugins/170-3-plugins-for-safer-activerecord-deletions.html)来帮助解决这个问题,或者你可以用很少的努力自己动手[比如这个例子](http://blog.semanticart.com/2009/03/22/using-default-scope-to-recreate-acts-as-paranoid的.html) (3认同)