嘿, 不是Rails noob,但是这让我很难过。在Rails中有很多直通组织。当我通过葡萄酒单协会(或通过)这种类似的东西将葡萄酒分配到葡萄酒吧。has_many通过吹掉协会关于大众协会的元数据
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所做的事情,我只是想念一些明显的东西。
谢谢。
感谢您的回复,但这不起作用。 wine_ids字段不是嵌套表单。这是一个字符串。我的UI不适合嵌套的表单约定。我更新了我的示例作为更新。咄。但还需要额外的步骤来查询葡萄酒ID,然后将它们与酒吧联系起来。 – 2010-12-13 17:41:55
嗨劳伦斯 - 我更新了我的答案,让我知道它是否有帮助。 – 2010-12-13 18:38:24