嘿,不是 Rails 菜鸟,但这让我很难过。With 在 Rails 中有很多通过关联。当我通过葡萄酒列表关联(或通过)表格将葡萄酒大量分配到葡萄酒吧时,类似这样的东西。
class WineBarController
def update
@winebar = WineBar.find(params[:id])
@winebar.wines = Wine.find(params[:wine_bar][:wine_ids].split(",")) // Mass assign wines.
render (@winebar.update_attributes(params[:wine_bar]) ? :update_success : :update_failure)
end
end
这将删除与该酒吧关联的每个酒单行。然后它会在 wine_ids 中找到所有的葡萄酒,我们假设它是一个逗号分隔的葡萄酒 id 字符串。然后它在酒单中插入一个新的关联。这将是昂贵的,但如果被破坏的关联行没有元数据,例如单个酒吧每杯和每瓶的价格,那很好。
有没有办法让它不把所有东西都吹走,只需对数组进行可枚举的比较并插入删除任何更改。我觉得这是 rails 所做的事情,我只是缺少一些明显的东西。
谢谢。