1

私のアプリでは、私はいくつかの を持っており、特定のに応じて (関連付けを介して)clientsいくつか持っているので、すべてをに手動で追加する代わりに、を選択するだけですべてが自動的に追加されます ( in is )。ハブTM 。elementshas_many_throughBusinessTypeClientelementsClientBusinessTypebusiness_typeClientattr_readonlyBusinessTypeelements

これがキャッチです。デフォルトBusinessTypeで作成した後、クライアントは要素を更新し、必要に応じて削除または追加できます(ほとんどは追加します)。したがって、私がやろうとしていることは次のとおりです。

onebusiness_typeに要素[1,2,3]があり、 one に割り当てられているとclientします。次に、次の要素が手動でclient=に追加される[4,5,6]ため、最終的には になり[1,2,3,4,5,6]ます。ここではすべて問題ありません。

しかし、この後、business_typeが更新され、要素が2削除されるため、最終的には になり[1,3]ます。これが取引です。 を削除してクライアントを更新したいのですが、問題の に対応しない を削除しないでください2。コールバックを使用して要素を更新していますが、メソッドが機能しませんHABTM 関係 (古い要素を取得するため。[4,5,6]business_type[1,3,4,5,6]after_updateclients'_wasbusiness_type's

before_update最初にコールバックを使用しclient.elements = client.elements - business_type.elementsて DB[1,2,3,4,5,6] - [1,2,3] = [4,5,6]に一時的に保存し、 after_update でclient.elements = client.elements + business_type.elements取得しようとしました[4,5,6] + [1,3] = [1,3,4,5,6]が、これには既に の新しい値があり[1,3]ます。business_type.elementsor で古い値を取得するにはどうすればよいですbefore_updateafter_update?

よろしくお願いします。

4

2 に答える 2