Ruby on Railsで、DBから取得したデータの取り扱いに関して質問があります。
もっとうまい書き方があると思い、質問させていただきました。
行いたいこととしては、下記になります。
- いくつかの商品に関して、とあるユーザーが購入したかどうかを確認
- その結果を商品ごとに、「購入したことがある」「購入したことがない」として返却する
Ruby on Railsのバージョンは5.0.0.1になります。
商品の購入履歴を管理しているsalesテーブルがあるとします。
id user_id 購入したユーザーのID item_id 商品のID count 購入した個数
ここで、下記のような、特定のユーザーで、かついくつかの商品IDに絞って検索をかけます。
rb
1@sales = Sale.where(user_id: 1).where(item_id: [1, 2, 3, 4])
この後、商品ごとに、その他のデータも整理しながら、レポートを作成します。
このとき、あるアイテムに対して、先ほど指定したユーザーがそのアイテムを購入したかどうかをbooleanで返したいと思っています。
rb
1items = Item.all 2 3items.each do |item| 4 # 省略 5 6 # ユーザーがそのアイテムを購入したかどうかを返す 7 if (@sales.to_a.find { |n| n[:item_id] == item.id }) == nil 8 user_bought_item = false 9 else 10 user_bought_item = true 11 end 12 13 # 省略 14end
上記の「 ユーザーがそのアイテムを購入したかどうかを返す 」部分のうまい書き方が分からず悩んでおります。
(アソシエーションは設定しない方向で考えております。)
こちら、もしお勧めの書き方などありましたらご教授ください。
宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。