Определить, какие атрибуты были изменены в обратном вызове Rails after_save?

Я настраиваю обратный вызов after_save в моем обозревателе модели, чтобы отправлять уведомление только в том случае, если атрибут модели опубликованный был изменен с false на true. Поскольку такие методы, как , были изменены? полезны только до сохранения модели, в настоящее время я (и безуспешно) пытаюсь это сделать следующим образом:

def before_save(blog)
  @og_published = blog.published?
end

def after_save(blog)
  if @og_published == false and blog.published? == true
    Notification.send(...)
  end
end

Есть ли у кого-нибудь предложения по поводу лучший способ справиться с этим, не знаю, почему он добавил COLLATE DATABASE_DEFAULT, но если я удалю, он также даст ту же ошибку

Неявное преобразование значения varchar в varchar не может быть выполнено, потому что сопоставление значения не разрешено из-за конфликта сопоставления.

27
задан p.campbell 14 June 2011 в 18:09
поделиться