ruby on rails - клонирование записи вместе с данными связанных моделей - PullRequest
1 голос
/ 20 января 2011

Мне действительно нужна помощь, касающаяся клонирования / дублирования записи вместе со связанными с ней данными. У меня есть представление, связанное с данными отправителя, примечаниями + другая связанная информация, найденная в нескольких таблицах.

Я пытался использовать код ниже:

  def duplicate1
    submission_to_dup = Submission.find(params[:id])
    new_submission = Submission.create(submission_to_dup.attributes)
    end

    def duplicate2
    new_submission = Submission.create(Submission.find(params[:id]).clone);
    end

Но кажется, что оба метода делают поверхностную копию своего родительского объекта, без ID или каких-либо ассоциаций.

Есть ли способ дублировать запись вместе со связанными с ней данными?

Заранее большое спасибо за вашу драгоценную помощь:)

1 Ответ

1 голос
/ 20 января 2011

Дублирование объекта в ActiveRecord никогда не приведет к клонированию: id, b / c, это уникальный первичный ключ. И поскольку этот первичный ключ должен быть внешним ключом в ассоциациях этого объекта, вы также потеряете их. Единственный способ создать дублирующуюся запись - это сделать что-то вроде:

def duplicate_record
  rec = Submission.find(params[:id])
  new = Submission.new(:attr => rec.attr)
  if new.save
    new.update_attributes(:nested_attr => {:attr => rec.nested_attr.attr})
  else
    something else
  end
end

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

В любом случае, надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...