2016-11-08 5 views
0

Я реализовал функцию, которая вызывается, когда активный объект записи успешно обновлен, но мне нужно передать значение до активной и активной даты для этой функции. Я пытаюсь реализовать это следующим образом, но значение, которое передается, является только обновленным значением.Доступ к значению обновления активного объекта записи

def update 
lead_before_update = @old_car_lead 

respond_to do |format| 
    if @old_car_lead.update(old_car_lead_params) 
    format.html { redirect_to @old_car_lead, notice: 'Lead was successfully updated.' } 
    format.json { render :show, status: :ok, location: @old_car_lead } 
    lead_after_update = @old_car_lead 

    Lead.send_lead(lead_before_update, lead_after_update) 

    else 
    format.html { render :edit } 
    format.json { render json: @old_car_lead.errors, status: :unprocessable_entity } 
    end 
end 

конец

Когда я пытаюсь войти в юдоль lead_before_update и lead_after_update, я наблюдаю оба имеют одинаковое значение.

Может ли кто-нибудь рассказать, как передать как обновление до, так и после обновления функции.

+0

использование 'lead_before_update = @ old_car_lead.dup' –

+0

работал как шарм. Спасибо :) –

ответ

0

lead_before_update и lead_after_update оба указаны один и тот же объект (old_car_lead). Когда он меняет, он меняет все.

Два пути вокруг здесь:

  1. Вы должны дублировать объект и присвоить переменной.

    lead_before_update = @old_car_lead.dup lead_after_update = @old_car_lead.dup

  2. Вы можете использовать @old_car_lead.attribute_name_was это даст вам предыдущее значение ссылки attribute_name

для второго варианта: What is the ActiveModel method attribute "_was" used for?

Смежные вопросы