Я хотел бы обновить все записи в модели rails (3.1) при обновлении атрибута для одной записи.
Как и self.update_attribute (: global_order => 1), до или после сохранения a хотел бы обновить все остальные записи для обновления их global_order (1, 2, 3, 4).
Прямо сейчас с обратным вызовом after_save, я попал в рекурсивный цикл, пропустить обратные вызовы - это путь? Я хотел бы, чтобы приложение генерировало исключения, если что-то кажется странным в global_order.
Или есть 3,1 драгоценных камня, которые решат мою проблему.
after_save :set_global_order
def set_global_order
@products = self.class.all(:order => :global_order)
@products.sort! {|a,b| a.global_order <=> b.global_order}
@products.reverse!
@products.each_with_index do |p, index|
p.update_attributes!({:global_order => index + 1})
end
end