ねえ、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が行うことのような気がしますが、明らかな何かが欠けているだけです。
ありがとう。