関連付けを通じて has_many にソフト削除を実装する最も簡単な方法は何ですか?
私が欲しいのは次のようなものです:
class Company > ActiveRecord::Base
has_many :staffings
has_many :users, through: :staffings, conditions: {staffings: {active: true}}
end
私は次の方法を使用したいCompany#users
:
- フォームで機能し、既存の契約を破らない
Company#users
ように、これは通常の関連付けである必要があります。 - 会社にユーザーを追加すると、新しい
Staffing
withactive: true
が作成されます。 - 会社からユーザーを削除すると、既存のユーザー
Staffing
が更新されactive: false
ます (現在は単に削除されます)。 - 以前に削除されたユーザーを会社に追加すると (そのため
Staffing#active == false
)Staffing
が に更新されactive: true
ます。
メソッドをオーバーライドすることも考えましたCompany#users=
が、関連付けを更新する方法が他にもあるため、実際には十分ではありません。
問題は、関連付けで説明された動作をどのように達成するかです。Company#users
ありがとう。