【问题标题】:How do I do a reverse removal of an association?如何反向删除关联?
【发布时间】:2015-11-11 20:02:22
【问题描述】:

我有两个模型 - membermembership

一个member has many memberships, dependent: :destroy 和一个membership 属于一个member

问题是在某些情况下,因为membership 属于许多模型(例如user),有时我想将membershipmember 解除关联并将其重新关联到user 记录。

如果是另一种方式,即从member 记录中删除membership,则更简单。我会这样做:member.memberships.destroy(membership)member.memberships.first.destroy 或 w/e。

但是....我正在做相反的事情,即我想保留membership 记录,但想删除与member 的关联。

所以我想做类似membership.member.destroy 的事情,而不是删除任何一条记录。一旦我删除了member 记录,它会自动删除关联的membership 记录,因为dependent: :destroy

【问题讨论】:

  • "不删除任何一条记录" - 嗯,只需将 member_id 设置为 nil 就可以了?
  • 那是我的第一选择,但真的那么简单吗?我觉得我必须为协会做更多的事情?

标签: ruby-on-rails ruby-on-rails-4 associations


【解决方案1】:

这可能是研究多态关联的好时机。另外我认为如果你使用 delete 而不是 destroy 它不会触发关联的依赖销毁操作。

【讨论】:

  • 这对我想做的事情来说太复杂了。塞尔吉奥的评论是完美的。只需将 member_id 设置为 nil 即可满足我的需求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-30
  • 2012-09-21
  • 2011-12-06
  • 2019-11-24
  • 1970-01-01
相关资源
最近更新 更多