通常は破棄される古い記録を保管したい。たとえば、ユーザーがプロジェクトに参加し、後でそこから追い出されたとします。レコードを非アクティブとしてフラグを立てる何かで user_project レコードを保持したいと思います。このために、各モデルで状態属性を使用して、各レコードの現在の状態を定義します。
ほとんどすべての「クエリ」は、「アクティブな」レコード、状態 == 1 のレコードのみを必要とし、ActiveRecord ヘルパー (find_by など) を使用したいと考えています。すべての「find_by」に追加したくないので、「_and_state」を使用して、アクティブなレコードのみを検索します。
これは私が今持っているものです:
u = UserProject.find_by_user_id_and_project_id id1, id2
これは、すべてのモデルについて、このようなすべてのクエリに対して私が持つものです:
u = UserProject.find_by_user_id_and_project_id_and_state id1, id2, 1
これを実装するための最もクリーンな方法は何ですか (状態の維持とよりクリーンなクエリ コード)?