Палец вверх 0
Перевод
Перевод

Как предварительно заполнить предыдущий объект в рельсах?

У меня есть эта строка кода

Account.build_address

и это работает, но мне нужно предварительно заполнить это с предыдущим адресом, так что если бы у меня были параметры, я мог бы сделать

Account.build_address(params[:address])

Но у меня нет параметров, у меня есть предыдущий адрес объекта, поэтому для примера я могу сказать,

@previous_address = Address.first
Account.build_address(@previous_address)

Но я не думаю, что это в формате, который мне нужен, чтобы заселить ... любые идеи

ruby ruby-on-rails-3 ruby-on-rails
задан Matt Elhotiby 29 февр. 2012 г., 3:49:52
источник

2 ответа

Решение 1
Перевод
Перевод

Попробуй это:

@previous_address = Address.first
Address.build_address(@address.attributes)

@address.attributes возвращает хеш атрибутов объекта ActiveRecord ... поэтому, пока build_address ожидает хеш, он должен генерировать объект, эквивалентный адресу, который вы передаете.

ответ дан Veraticus 29 февр. 2012 г., 3:54:20
источник
Палец вверх 2
Перевод
Перевод

Вам не нужно строить, вы можете просто клонировать существующий объект:

@previous_address.clone

Это скопирует все столбцы модели @previous_address , кроме поля id

ответ дан klochner 29 февр. 2012 г., 3:55:44
источник