У меня есть проблема с отслеживанием изменений атрибутов здесь моя модельюотслеживание изменений в атрибутах
class Ticket < ActiveRecord::Base
include Generator
around_update :create_history
def create_history
@event_status = "Status to #{self.status}.\n" if status_changed?
@event_owner = "Now it is provided by #{self.stuff.name}\n" if stuff_id_changed?
yield
histories.create(event: "Changed! #{@event_status} #{@event_owner} On #{self.updated_at.utc}") if @event_status || @event_owner
end
end
обновления действия тривиально
def update
flash[:notice] = "Your ticket successfully updated."
@ticket.update!(ticket_params.merge(status: 0))
end
Но это не работает (спецификации на создание истории я буду очень благодарен за любой ответ, указывающий на мою ошибку.
вы пользователь 'ticket_params.merge (статус: 0)' поэтому ваш 'статус' всегда' 0'. он не меняет – Aleksey
также я бы рекомендовал использовать драгоценный камень [paper_trail] (https://github.com/airblade/paper_trail). он имеет очень приятные функции для управления версиями ваших моделей. – Aleksey
и как насчет значений 'stuff_id'? это действительно так или иначе изменилось? – Aleksey