У меня есть модель с именем Details
, которая содержит метод, который обновляет некоторые атрибуты с помощью вычислений с использованием атрибутов другой модели (Summary
). Я вызываю этот метод в before_save
, чтобы атрибуты Details
'автоматически обновлялись при изменении записи. Я хотел бы обновить мои атрибуты Details
, когда я изменяю свои записи в модели Summary
. То, что я ищу, может быть использовано так:
def update
@summary = Summary.find(params[:id])
if @summary.update_attributes(params[:summary])
(Details.update_all_attributes)
flash[:notice] = "Updated!"
redirect_to edit_summary_path(@summary)
else
render :action => 'edit'
end
end
См. Строку: Details.update_all_attributes
. Все мои Details
'атрибуты будут сохранены и пересчитаны из-за введенного мной before_save
. Как я могу это сделать ? Спасибо.
Редактировать:
Я только что нашел ответ. Я сделал цикл, который сохраняет все мои записи.
def update
@summary = Summary.find(params[:id])
if @summary.update_attributes(params[:summary])
@details = Details.all
@details.each do |detail|
detail.save!
end
flash[:notice] = "Updated!"
redirect_to edit_summary_path(@summary)
else
render :action => 'edit'
end
end
Надеюсь, я помогу некоторым из вас!