проверка состояния ассоциации has_many, выполняющая N + 1 запросов активного администратора - PullRequest
0 голосов
/ 05 сентября 2018

Model Strucure: у пользователя много подписок и блогов, подписки has_many купонов. Я включил таблицу has_many, но мне нужно выполнять проверку состояния для каждой подписки Так что, если я выполняю запрос запроса в определенной области, то все пользователи получают только действительные подписки. Итак, как избежать запроса N + 1, а также выполнить проверку состояния.

def scoped_collection
  end_of_association_chain.includes(:subscriptions, :blogs)
end
index do  
  column :email
  column "referrer" do |user|
    subscription = user.subscriptions.valid.first
    subscription.referrers.first.code if subscription
  end
  column "blog_id" do |user|
     user.blog.id if user.blog
  end

end

1 Ответ

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

Загрузка действительных подписок только по запросу, пожалуйста, проверьте код ниже

 controller do
      def scoped_collection
        User.includes(subscriptions: :referrers).select("users.*, (SELECT referrers.code from referrers WHERE subscriptions.state = 1 LIMIT 1) as refer_code")
      end
  end
...