Предположим, у меня есть коллекция страниц, упорядоченная по столбцу с именем: sibling_order. Есть ли более эффективный способ обновления порядка коллекции, чем то, что я делаю ниже:
class Page < ActiveRecord::Base
...
def update_order(order)
if (order < self.sibling_order)
siblings = Page.where("parent_id = ? AND sibling_order < ? AND sibling_order >= ?",new_parent_id,self.sibling_order,order)
siblings.collect{|s|s.update_attribute(:sibling_order,s.sibling_order + 1)}
elsif (order > self.sibling_order)
siblings = Page.where("parent_id = ? AND sibling_order > ? AND sibling_order <= ?",new_parent_id,self.sibling_order,order)
siblings.collect{|s|s.update_attribute(:sibling_order,s.sibling_order - 1)}
end
self.update_attribute(:sibling_order, order) if self.sibling_order != order
end
...
end