通过关联在 has_many 上实现软删除的最简单方法是什么?
我想要的是这样的:
class Company > ActiveRecord::Base
has_many :staffings
has_many :users, through: :staffings, conditions: {staffings: {active: true}}
end
我想使用Company#users
以下方式:
- 应该是一个正常的
Company#users
关联,以便它与表单一起使用并且不会破坏现有的合同。 - 将用户添加到公司时,会创建一个新
Staffing
的 with 。active: true
- 当从公司中删除用户时,现有的
Staffing
会被更新active: false
(目前它只是被删除)。 - 将以前删除的用户添加到公司时(以便
Staffing#active == false
)Staffing
更新为active: true
.
我考虑过覆盖该Company#users=
方法,但它确实不够好,因为还有其他更新关联的方法。
所以问题是:如何实现对Company#users
关联的解释行为?
谢谢。