Подтвердить что ты не робот

Копирование экземпляров модели в Rails

У меня есть модель Foo с атрибутами id, name, location. У меня есть экземпляр Foo:

f1 = Foo.new
f1.name = "Bar"
f1.location = "Foo York"
f1.save

Я хотел бы скопировать f1 и из этой копии создать другой экземпляр модели Foo, но я не хочу, чтобы f1.id переносился на f2.id (я не хочу явно назначьте это, я хочу, чтобы db обрабатывал его, как и должно).

Есть ли простой способ сделать это, кроме ручного копирования каждого атрибута? Любые встроенные функции или написать один из них - лучший маршрут?

Спасибо

4b9b3361

Ответ 3

a неправильный способ сделать это:

f2 = Foo.new( f1.attributes )     # wrong!
f2.save                           # wrong!

или в одной строке, но все же неверно:

f2 = Foo.create( f1.attributes )  # wrong!

Подробнее см. комментарии

Ответ 4

Вы можете сделать дубликат записи в рельсах, как

@bar = @foo.dup
@bar.save!

Ответ 5

Вы можете использовать встроенные методы attributes, которые предоставляют рельсы. Например.

f2 = Foo.new(f1.attributes)

или

f2 = Foo.new
f2.attributes = f1.attributes