私の Rails アプリでは、特定のレコードを「ソフト」削除する必要があるため、DB から実際に削除されることなく非アクティブ化されます。現在、「is_deleted」フラグを使用して実装しています。
私の質問は、このモデルを含む関連付けを処理するためのベスト プラクティスがあるかどうかです。例えば:
class Foo
attr_accessible :is_deleted
scope :active, -> { where(is_deleted:false) }
belongs_to :bar
end
class Bar
has_many :foos
end
通常は「アクティブ」な foo のみを扱うことを知って、Bar モデルをセットアップする方法を理解しようとしています。
私はいくつかのアイデアを思いついたので、どちらか一方を使用することの長所/短所があるかどうかを知りたい.
- has_many 宣言で「条件」修飾子を使用して、削除されたアイテムを除外します。
- Bar に「active_foos」メソッドを作成して、削除されていないアイテムのみを返します。
- 「 acts_as_paranoid」ジェムを使用するだけです。私が必要としているものには少し重い気がしますが、おそらく最も簡単です。