2

Railsアプリにフォローモデルがあり、ユーザーがコンテンツをフォローすると、レコードが作成され、フォローが解除され、レコードが削除されます。

この変更を別のテーブルで追跡する必要があります (挿入と削除のみ)。

プレーン SQL を使用していくつかのレポートを作成するために使用されます。そのため、テーブルは「シャドウ」とも呼ばれる同様の構造を持つ必要があります。

元のモデルを追加のロジックで汚染したくありません-いくつかの解決策がありますが、十分に柔軟ではありません:

https://github.com/rubiety/has_draft - 特定の操作を選択できない

https://github.com/bglusman/ruby-shadow-tables - raw および mysql のみ

そのような場合の良い解決策を知っている人はいますか?

4

3 に答える 3

0

もう1つのテーブルshadow_followsを作成し、コールバックメソッドafter_createとbefore_destroyを使用して、ターゲットレコードを新しいテーブルにコピーできます。

于 2013-02-19T13:13:51.690 に答える
0

これはかなり古いですが、他の誰かがこのようなことをしたい場合に備えて、友人と私はDBトリガーを使用してレールにシャドウテーブルをセットアップするスクリプトを作成しました... https://github.com/bglusman/ruby-shadow -テーブル

これは少し粗雑で、gem に抽象化され、おそらく DB ニュートラル ソリューションになることで確実にメリットが得られます。

于 2014-11-11T22:23:33.627 に答える
0

そのような場合に適した宝石が見つからず、レールオブザーバーで実装することにしました。特別なことは何もありません..最も簡単な解決策です。

于 2013-03-11T10:21:41.797 に答える