Esta é minha configuração:
- os usuários têm muitas compras
- pacotes têm muitas compras
- embalagens têm muitas receitas
Quero selecionar todas as receitas que um usuário comprou com um escopo no Recipe
classe. Isto é o que eu tenho a partir de agora:
scope :purchased, lambda { |user| includes(pack: :purchases).where(packs: { purchases: { user: user } }) }
Por alguma razão, quando eu chamo Recipe.purchased(current_user)
Eu recebo tudo Recipe
registros.
O que estou fazendo de errado com o escopo?
Respostas:
4 para resposta № 1Isso pode ser feito facilmente no Rails. Você acabou de usar tem muitos com o :through
opção como esta:
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