0

私は3つのモデルを持つアプリを持っています。非常によく似た見込み客と顧客がいます (ただし、独自のモデルを保証するほど十分に異なっています)。次に、interactionable_idとinteractionable_type(もちろん、「顧客」または「リード」のいずれか)を持つ「Interactions」と呼ばれるポリモーフィックモデルがあります。

私は最近、インタラクションをリードから顧客に移行する方法を構築しようとしました (リードが顧客にアップグレードされた場合)。

コードを無駄のないものにしたかったので、メソッドをシンプルに保つために、インタラクションの属性を単純に更新して、interactionable_id と interactable_type がそれぞれ顧客の ID と「Customer」に変更されるようにすることにしました。

これを行うためにさまざまな方法を試しましたが、更新できるのはinteractionable_typeだけでした。私が何を試しても、interactionable_idは変わりません。(customer.id ではなく) 静的な番号を入力してみました。update_attributes を試し、属性を個別に更新してから保存しようとしました。また、attr_accessible リストに :interactionable_id がありました。

問題に少し異なるアプローチをすることにしたので、これを機能させましたが、なぜこれが起こっているのかについての正確な答えを見つけることができませんでした.

誰かがこれがなぜなのか知っているのだろうかと思っていました。ポリモーフィック アソシエーション ID にある種のロックはありますか? 関連付けを変更できなかったのはなぜですか?

4

1 に答える 1

1

これはうまくいくはずです

interaction.interactionable = customer
interaction.save
于 2013-04-25T08:12:33.313 に答える