has_many association sate check执行N + 1查询活动管理员

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 

仅从查询加载有效订阅,请检查以下代码

  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