0

这似乎相当简单。

@new_email.distributions = @email.distributions.dup

执行此操作后,两者共享相同的分布。

但是,一旦新对象“保存”。旧的失去了所有的分布。

这是为什么?

供参考:

分布belongs_to :email。电子邮件has_many :distributions

4

3 回答 3

3

您对此建模的方式会导致问题!

每个 Distribution 只能属于一封电子邮件...该email_id属性已设置,并且 Distribution 不能属于两封电子邮件!(分布中只有一个email_id属性)。

您应该使用“多对多”或“多对多”关系来对两个模型之间的关联以及它们之间的连接表进行建模,这样您就可以存储分布如何不仅仅属于一封电子邮件。

于 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 回答