これはかなり簡単なようです。
@new_email.distributions = @email.distributions.dup
これが実行された後、両方が同じ分布を共有します。
ただし、新しいオブジェクトが「保存」されると。古いものはすべてのディストリビューションを失います。
何故ですか?
ご参考までに:
分布belongs_to :email
。Eメールhas_many :distributions
これはかなり簡単なようです。
@new_email.distributions = @email.distributions.dup
これが実行された後、両方が同じ分布を共有します。
ただし、新しいオブジェクトが「保存」されると。古いものはすべてのディストリビューションを失います。
何故ですか?
ご参考までに:
分布belongs_to :email
。Eメールhas_many :distributions
これをモデル化する方法が問題を引き起こします!
各ディストリビューションは1つの電子メールにのみ属することができます...そのemail_id
属性はすでに設定されており、ディストリビューションは2つの電子メールに属することはできません!(email_id
ディストリビューションには属性が1つだけあります)。
「多対多」または「多対多」の関係を使用して、2つのモデル間の関連付け、およびモデル間の結合テーブルをモデル化する必要があります。これにより、配布が複数の電子メールにどのように属するかを保存できます。
clone
の代わりに使用してみてくださいdup
。
同じオブジェクトを使用しているので、試してみてください:some_other_var = @email.distributions.dup
私があなたを正しく理解していれば