タイトルが本当に私がやろうとしていることを正しく説明しているかどうかはわかりませんので、ご容赦ください。構築した請求システムのクライアントというテーブルがあります。プロジェクトと請求書というテーブルもあります。
これが私のデータベース構造の例です(単なる例として、テーブルの実際の列ではありません)。
Clients
id
name
description
archive
Projects
id
client_id
name
description
archive
Projects
id
client_id
project_id
name
description
archive
特定の請求書、プロジェクト、またはクライアントを個別にアーカイブする機能を作成しました。ただし、クライアントをアーカイブするときに、クライアントのプロジェクトと請求書が自動的にアーカイブ済みとしてマークされるようにする場合、これを行うための最良の方法を確認したいと思いました。私のプロセスは次のようになります。
- クライアントをアーカイブすると、クライアント、そのクライアントIDを持つすべてのプロジェクト、および同じクライアントIDを持つすべての請求書がアーカイブされます。
- プロジェクトをアーカイブすると、プロジェクトとそのプロジェクトIDを持つすべての請求書がアーカイブされます。
- 請求書のアーカイブは、請求書自体をアーカイブするだけです
注:「アーカイブ済み」とは、アーカイブビットが0ではなく1に反転することを意味します(アーカイブ/アクティブではありません)。
ちなみに、何かをアーカイブする方法は編集画面に「アーカイブ?」があります。アイテムをアーカイブするためにチェックするチェックボックス。
if archive == 1
コントローラの編集アクションで、追加のsql updateステートメントを実行して依存アイテムelse @object.save
を更新し、編集されたアイテムのデータを保存するようなことを言うことができることを知っています。
私の質問?
これを行うためのより良い方法はありますか?私が言及した方法は、一般的にベストプラクティスですか?:dependent => :destroy
「親」アイテムが削除されたときに、関連するテーブルの行を削除するために、モデルの他の場所をすでに使用しています。Railsに組み込まれているもので、テーブルの関係を介して実行しようとしていることをマークできますか?
これで助けてくれてありがとう!問題と質問について十分に説明できれば幸いですが、質問がある場合はお知らせください。