私は現在、Rails 4.2 の最新のベータ版を使用して、プロトタイプ アプリを構築しています。
システムのいくつかの部分では、ユーザーがリスト内の「デフォルト」項目を選択できるようにする必要があります。
これまでのところ、これをモデルの「デフォルト」フィールドとして実装し、「デフォルト」が 1 つしか許可されていないことを確認するための一意性検証を実装しました。
私のビジネス ルールの 1 つは、「既定の」エンティティを削除しないようにすることです。
before_destroy コールバックを使用してこれを行うこともできますが、これは正常に機能しますが、https://github.com/radar/paranoiaの paranoia gem を使用してソフト削除機能を提供しています。これは、モデルの破棄を update 呼び出しでオーバーライドします (代わりに「deleted_at」フィールドを設定します)。deleted_at フィールドが十分に早く設定されていないため、 before_update 呼び出しを使用しても期待される結果が得られません。
パラノイアの宝石が問題を引き起こす場合は、喜んでその要件を完全に削除します。ソフト削除は、この段階では不可欠な機能ではなく、あると便利です。
このロジックを実装する方法について誰か提案があり、それが期待どおりに機能することをテストすることも重要ですか?