0

Railsでは、レコードを削除するときに、そのような削除されたレコード用に別のテーブルを維持したいと思います(構造的には前者に類似しています)。

これを実現する1つの方法は、最初のモデルから構造、検証、および関連付けを明らかにコピーし、それを削除済みアイテムモデルに貼り付けることです。ただし、これは多くのコード冗長性をもたらし、スケーラブルなソリューションではありません。

多くの(またはまったく)コードの冗長性なしで、または上記のものよりスケーラブルである可能性のあるソリューションなしで、Railsでこれを達成する方法はありますか?

Ruby1.9.3-p125とRails3.2を使用しています。

アップデート

テーブルに追加のis_deleted列を使用することを検討しましたが、このテーブルが大きくなりすぎて投稿が削除されて乱雑になることを望まなかったため、これに反対しました。私はこれらの削除された投稿に実際にアクセスするつもりはありません-これらは単に記録管理またはアーカイブの目的で保存されています。この列を追加すると、このテーブルへのアクセスが遅くなり、さらに重要なことに、モデルis_deleted == falseのにこのチェックを含めたとしても、SQL条件のチェックをどこかで見逃す可能性があります。default_scope

4

3 に答える 3

0

さて、基本的にあなたは記録を保持し、それらを捨てたくないのです。したがって、それらを「削除済み」とマークし、コード内のロジックを微調整して、それらのレコードを取得するときにそれらのレコードを考慮しないようにすることができます。

于 2012-03-02T07:41:33.033 に答える
0

元のテーブルに「削除済み」列を追加します。モデルのデフォルト スコープを設定して、削除されたレコードを除外します。

于 2012-03-02T07:45:18.193 に答える