这似乎相当简单。
@new_email.distributions = @email.distributions.dup
执行此操作后,两者共享相同的分布。
但是,一旦新对象“保存”。旧的失去了所有的分布。
这是为什么?
供参考:
分布belongs_to :email
。电子邮件has_many :distributions
这似乎相当简单。
@new_email.distributions = @email.distributions.dup
执行此操作后,两者共享相同的分布。
但是,一旦新对象“保存”。旧的失去了所有的分布。
这是为什么?
供参考:
分布belongs_to :email
。电子邮件has_many :distributions
您对此建模的方式会导致问题!
每个 Distribution 只能属于一封电子邮件...该email_id
属性已设置,并且 Distribution 不能属于两封电子邮件!(分布中只有一个email_id
属性)。
您应该使用“多对多”或“多对多”关系来对两个模型之间的关联以及它们之间的连接表进行建模,这样您就可以存储分布如何不仅仅属于一封电子邮件。
尝试使用clone
而不是dup
.
因为您使用相同的对象,请尝试:some_other_var = @email.distributions.dup
如果我理解正确