/ / Registros de escopo que um usuário comprou - ruby-on-rails, ruby, activerecord, escopo, associações

Registros de escopo que um usuário comprou - ruby-on-rails, ruby, activerecord, escopo, associações

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 № 1

Isso 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