Если пропишите все ассоциации в моделях, то сможете потом получать список продуктов через
@user.products
. Внутри там получаются несколько
INNER JOIN
и как альтернативный вариант можете сами составить такой запрос.
class User < ApplicationRecord
has_many :subscriptions
has_many :categories, through: :subscriptions
has_many :products, through: :categories
end
class Subscription < ApplicationRecord
belongs_to :user
belongs_to :category
has_many :products, through: :categories
end
class Category < ApplicationRecord
has_many :subscriptions
has_many :products
end
class Product < ApplicationRecord
belongs_to :category
end