【发布时间】:2011-10-17 10:07:48
【问题描述】:
当我更新单个记录的属性时,我想更新 rails (3.1) 模型中的所有记录。
像 self.update_attribute(:global_order => 1) 然后在保存之前或之后想要更新所有其他记录以更新他们的 global_order (1, 2, 3, 4)。
现在在使用 after_save 回调时,我陷入了递归循环,跳过回调是要走的路吗?如果 global_order 中有任何奇怪的地方,我希望应用程序抛出异常。
或者是否有任何 3.1 gem 可以解决我的问题。
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
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-3.1