Частичные обновления ActiveRecord в Padrino

Как настроить ActiveRecord для использования partial_updates в приложении Padrino?

Customer < ActiveRecord::Base
  after_update :check_name_change

  private
  def check_name_change
    if name_changed?
      # send mail notification for change of name.
    end
  end
end

Учтите, что у пользователя есть атрибуты «имя» и «страна» среди других в базе данных.
Когда пользователь обновляет имя, он отправляет уведомление по электронной почте, как и ожидалось. Однако даже когда пользователь меняет атрибут страны (или любой другой), он отправляет уведомление об изменении имени, что недопустимо.

Проверив журналы, я обнаружил, что запрос на обновление для страны выполняет полное обновление, устанавливая все атрибуты записи пользователя. Как таковое name_changed? Метод возвращает true, и отправляется электронное письмо с уведомлением об изменении имени.

Если я поставлю следующую строку в app.rb

ActiveRecord::Base.partial_updates = true

Я не вижу разницы. Любые вызовы update_attribute по-прежнему выполняют полное обновление записи.
Есть ли другое решение или обходной путь?


person Vignesh    schedule 14.01.2011    source источник


Ответы (1)


Это не относится к падрино, а только к активной записи.

Попробуйте на before_save.

person DAddYE    schedule 01.03.2011
comment
Так вы имеете в виду, что у активной записи есть эта проблема? Я использую активную запись 3.0.0, есть идеи, исправлено ли это в более поздних версиях? Ваше предложение использовать before_save действительно является обходным путем, поскольку я уже реализовал его, но он будет работать только в приведенном выше сценарии. В общем, мы не всегда можем использовать before_save вместо after_create. Моя проблема связана с частичными обновлениями, мне нужно, чтобы она работала. - person Vignesh; 04.03.2011