/ / Zakres rekordów użytkownika zakupionego - ruby-on-rails, ruby, activerecord, scope, association

Zakres zapisów, które użytkownik kupił - ruby-on-rails, ruby, activerecord, scope, asocjacje

To jest moja konfiguracja:

  • użytkownicy mają wiele zakupów
  • paczki mają wiele zakupów
  • paczki mają wiele przepisów

Chcę wybrać wszystkie przepisy, które użytkownik kupił z zakresu w Recipe klasa. Oto, co mam teraz:

scope :purchased, lambda { |user| includes(pack: :purchases).where(packs: { purchases: { user: user } }) }

Z jakiegoś powodu, kiedy dzwonię Recipe.purchased(current_user) Dostaję wszystko Recipe dokumentacja.

Co robię źle w zakresie?

Odpowiedzi:

4 dla odpowiedzi № 1

Można to łatwo zrobić w Railsach. Po prostu korzystasz ma wiele z :through opcja taka jak ta:

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