嘿, 不是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