Как я могу скопировать массив в другой объект? - PullRequest
0 голосов
/ 26 октября 2011

Это кажется довольно простым.

@new_email.distributions = @email.distributions.dup

После того, как это выполнено, оба разделяют идентичные распределения.

Однако, как только новый объект "сохраняет".Старый теряет все свои распределения.

Почему это так?

К вашему сведению:

Распределения belongs_to :email.Эл. Почта has_many :distributions

Ответы [ 3 ]

3 голосов
/ 26 октября 2011

Способ, которым вы моделируете это, вызывает проблему!

Каждый Распределение может принадлежать только одному электронному письму ..., что атрибут email_id уже установлен, а Распределение не можетпринадлежат два письма!(в распределении есть только один атрибут email_id).

Вы должны использовать отношение "многие ко многим" или "имеет много сквозных" для моделирования ассоциациимежду вашими двумя моделями и таблицей соединений между ними, чтобы вы могли хранить информацию о том, как рассылки принадлежат более чем одному письму.

1 голос
/ 26 октября 2011

Попробуйте использовать clone вместо dup.

0 голосов
/ 26 октября 2011

Поскольку вы используете один и тот же объект, попробуйте: some_other_var = @email.distributions.dup, если я вас правильно понял

...