【发布时间】:2012-05-13 13:45:36
【问题描述】:
在has_many上通过关联实现软删除的最简单方法是什么?
我想要的是这样的:
class Company > ActiveRecord::Base
has_many :staffings
has_many :users, through: :staffings, conditions: {staffings: {active: true}}
end
我想通过以下方式使用Company#users:
-
Company#users应该是一个正常的关联,以便它适用于表单并且不会违反现有合同。 - 向公司添加用户时,创建了一个带有
active: true的新Staffing。 - 从公司删除用户时,现有的
Staffing会更新active: false(目前它刚刚被删除)。 - 向公司添加以前删除的用户时(以便
Staffing#active == false)Staffing更新为active: true。
我考虑过覆盖Company#users= 方法,但它确实不够好,因为还有其他更新关联的方法。
所以问题是:如何在Company#users 关联上实现解释的行为?
谢谢。
【问题讨论】:
标签: ruby-on-rails ruby activerecord orm associations