模型结构:用户拥有许多订阅和博客,订阅具有has_many优惠券。 我已经包含has_many表,但是我需要为每个订阅执行状态检查 因此,如果我在作用域集合中执行where查询,则它将使所有用户仅具有有效订阅。那么如何避免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
答案 0 :(得分:0)
仅从查询中加载有效的订阅,请检查以下代码
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