acts_as_list の remove_from_list が悪さをしている件に付いて

リストアイテムをdestroy する時に、act_as_list の before_destroy でremove_from_list が呼ばれるのだが、このremove_from_list の中で以下のような処理が行われている。

def remove_from_list
   if in_list?
    decrement_positions_on_lower_items
    update_attribute position_column, nil
  end
end

この中に有る、update_attribute が曲者で、これが有るために、呼ばれなくていい before_update が起動してしまう。

もう削除するんだから、position_columnがどうであろうと関係ないように思えるんだが。なので、このupdate_attributeの行をコメントアウトする事で、before_updateが呼ばれなくなるようにすることができる。