我有一个包含项目列表的类别。项目有一个位置,类别有一个关系 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
上面的工作,但它似乎真的很冗长。有没有办法让我告诉项目保存需要刷新类别关系,因为订单可以更改?