0

これはかなり簡単なようです。

@new_email.distributions = @email.distributions.dup

これが実行された後、両方が同じ分布を共有します。

ただし、新しいオブジェクトが「保存」されると。古いものはすべてのディストリビューションを失います。

何故ですか?

ご参考までに:

分布belongs_to :email。Eメールhas_many :distributions

4

3 に答える 3

3

これをモデル化する方法が問題を引き起こします!

各ディストリビューションは1つの電子メールにのみ属することができます...そのemail_id属性はすでに設定されており、ディストリビューションは2つの電子メールに属することはできません!(email_idディストリビューションには属性が1つだけあります)。

「多対多」または「多対多」の関係を使用して、2つのモデル間の関連付け、およびモデル間の結合テーブルをモデル化する必要があります。これにより、配布が複数の電子メールにどのように属するかを保存できます。

于 2011-10-26T18:16:14.043 に答える
1

cloneの代わりに使用してみてくださいdup

于 2011-10-26T18:22:06.250 に答える
0

同じオブジェクトを使用しているので、試してみてください:some_other_var = @email.distributions.dup私があなたを正しく理解していれば

于 2011-10-26T18:13:21.853 に答える