присоединиться к таблице с включением создает проблему - PullRequest
0 голосов
/ 05 сентября 2018

Структура модели: -

User has_many :subscriptions 
Blog  has_one :coupon
Subscription has_one :coupon

Я включаю таблицы

User.includes(subscriptions: :coupon, :blogs)

Я пытаюсь получить данные всех пользователей и получить только действительные подписки, соответствующие им.

Если я сделаю

User.includes(subscriptions: :coupon, :blogs).where(:state => 1).references(:subscriptions) 

тогда я получаю пользователей, имеющих только действительные подписки

Так, как получить всех пользователей с предварительно загруженными купонами блогов и включенными с действительными подписками ???

1 Ответ

0 голосов
/ 05 сентября 2018

Если вы хотите загрузить всех пользователей, включая тех, у кого нет действительных подписок, но для каждого пользователя есть доступ только к действительным подпискам, вам нужно определить другую ассоциацию valid_subscriptions. Это можно сделать так:

В user.rb

has_many :valid_subscriptions, -> { valid }, class_name: 'Subscription'

В subscription.rb укажите, что значит действительный.

scope :valid, -> { where(state: 1) }

Тогда ваш запрос может быть User.includes(:blogs, valid_subscriptions: :coupon)

...