前提・実現したいこと
Railsのhas_manyの関係において、既に生成されモデルの中から、一部の子要素を取り除く方法はありますか。
前提として、paramsを基に親1:個nのモデルインスタンスが生成されている状態です。
該当のソースコード
(例として今書いたものです。記述ミスなどあるかもしれません。)
モデル側
class Order < ApplicationRecord has_many :items end class Item < ApplicationRecord belongs_to :order end
コントローラ側
@order = Order.new(order_params) #save前にitemsの中から不要なものを取り除きたい(例えばquantityが0なitemはDB上には要らないとき等) @order.save def order_params params.require(:order).permit(:no, items_attributes: [:quantity, :price]) end
試したこと
実は一つだけ、実際にうまくいっている実装があります。
@order.items.target.delete_if{|item| item.quantity.zero? }
ただ、こちらは個人的にとても分かりにくく感じていて、
(targetで取り出してるものが別の新規オブジェクトに見えてしまい、それを編集しても変わるもんなのかな〜という)
もっと分かりやすい実装方法があればいいなと思っています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。