いつもお世話になっております。
今回も個人開発にて問題にぶつかったので質問させていただきました。
開発環境
- Ruby 2.5.1
- Rails 5.2.1
実現したいこと
子テーブルの特定のデータの最大値を親テーブルのカラムに保存する
例えば)
親のレストランテーブル(restaurants)と子の料理テーブル(foods)があるとします。
restaurants
|id||name|min_price|max_price|...|
|:--|:--|:--|:--|:--|
|1||レミーのおいしいレストラン|2000|3000|...|
foods
id | restaurant_id | name | price | ... |
---|---|---|---|---|
1 | 1 | おいしい料理 | 3000 | ... |
restaurantsをフォームで更新するときはfoodsもあり、同時に更新できます。
paramsには下記のように送られてきます。(accepts_nested_attributes_for
を使ってこのようなフォームを実現しています)
params.require(:restaurant).permit( :name, :min_price, :max_price, ... foods_attributes: [:name, :price] )
そしてこのrestaurant
を登録、更新する際に同時遅れてきたfoods_attributes
を参照し、最小値、最大値を計算してrestaurant
のテーブルにあるmin_price
、max_price
に登録したいと考えています。
やろうとしたこと
restaurant
モデルにて
# prices = {900, 1800, 2700, 1200, 600} def min_price prices.min end def max_price prices.max end def set_extra_information {:min_price => min_price, :max_price => max_price } end
このような形で実現できればと思ったのですがpricesをどう取得するかという問題にぶつかっています。
何かいい方法はありますでしょうか?
参考記事もみましたが、この場合かなり応用問題な感じなので皆様の知恵が必要です。
何か質問がありましたら、何なりとお申し付けくださいませm(_ _)m
どうぞよろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。