2011-10-26 94 views
0

這看起來相當簡單。如何將數組複製到另一個對象?

@new_email.distributions = @email.distributions.dup 

執行此操作後,兩者共享相同的分佈。

但是,一旦新對象「保存」。舊的失去了它的所有分配。

這是爲什麼?

FYI:

分佈belongs_to :email。電子郵件has_many :distributions

回答

3

你模擬這種導致該問題的方式瞭解你!

每個分配只能屬於一個電子郵件... email_id屬性已設置,並且一個分配不能屬於兩個電子郵件! (分發中只有一個email_id屬性)。

您應該使用「多對多」或「多對多」關係對兩個模型之間的關聯以及它們之間的連接表建模,以便您可以存儲分佈屬於的方式不僅僅是一封電子郵件。

+0

輝煌!沒有想到明顯的!非常感謝!! – Trip

0

因爲你使用同一個對象,嘗試:some_other_var = @email.distributions.dup如果我正確

+0

這是一個不同的對象。 '@email = Email.find(params [:id]) @new_email = @ email.clone @ new_email.distributions = @ email.distributions.dup' – Trip

1

嘗試使用clone而不是dup

相關問題