Questa è la mia configurazione:
- gli utenti hanno molti acquisti
- i pacchetti hanno molti acquisti
- i pacchetti hanno molte ricette
Voglio selezionare tutte le ricette che un utente ha acquistato con un ambito nel Recipe
classe. Questo è quello che ho da ora:
scope :purchased, lambda { |user| includes(pack: :purchases).where(packs: { purchases: { user: user } }) }
Per qualche motivo quando chiamo Recipe.purchased(current_user)
Ho tutto Recipe
record.
Cosa sto facendo di sbagliato con l'ambito?
risposte:
4 per risposta № 1Questo può essere fatto facilmente in Rails. Basta usare ha molti con il :through
opzione come questa:
class User < ApplicationRecord
has_many :purchases
has_many :packs, through: :purchases
has_many :recipes, through: :packs
end
user = User.first
user.recipes # returns all user"s recipes