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が呼ばれなくなるようにすることができる。