Иметь столбец в ордерах с именем closed_date, который является полем DateTime.
Использование грязного. пытаюсь сделать if self.closed_date_changed?
но это не работает. Нужно ли делать что-то особенное для отслеживания изменений с помощью полей даты и времени?
EDIT
Использование Rails 3.0.3, Ruby 1.9.2p136
Код в контроллере заказов
def update
@order = Order.find(params[:id])
if @order.update_attributes(params[:order])
@order.close_order
end
end
end
В модели
include ActiveModel::Dirty
def close_order
if self.closed?
if self.closed_date_changed?
self.items.each do |item|
item.update_attribute(:created_at, self.closed_date)
end
end
else
self.update_attributes(:closed_date => Time.now, :closed => true)
self.items.each do |item|
item.update_attribute(:created_at => Time.now)
item.schedule_any_tasks
end
end
end
end