アイテムのリストがあるカテゴリがあります。アイテムには位置があり、カテゴリにはhas_many:items、:order=>"position"という関係があります。ユーザーが位置の値を更新するときに、その位置を確認したいと思います。私の位置は、丸められた数値間を移動できるようにするための浮動小数点です。
pos=item.category.items.map(&:id)
current_position=pos.index(id.to_i)
item.save # want to refresh the relationship here
pos_new=item.categoty.items.map(&:id)
# grabbing this since just accessing item isn't updated if positioning has changed
item_new=Item.find(id)
pos_new=item_new.category.items.map(&:id)
new_position=pos_new.index(id)
if current_position!=new_position
is_moved=true # sent back in JSON to propagate a dynamic change.
end
上記は機能しますが、それは本当に冗長なようです。順序が変更される可能性があるため、カテゴリの関係を更新する必要があることをアイテム保存で通知する方法はありますか?