将相关模型的范围应用于查询

Applying a scope from a related model to a query

我有两个模型,UserPayment。一个 User has_many Payment 和一个 Payment belongs_to 一个 User.

我正在查询当月的所有付款,如下所示:

@payments = Payment.approved.current_month

但我需要排除超级管理员用户的付款,我的 User 模型中的范围为 :exclude_superadmins,这将从 User 查询中排除所有用户超级管理员(由 User.permission_level 决定)。

我找不到将 :exclude_superadmins User 范围链接到 Payment 查询的方法,因为它会导致

NoMethodError: undefined method `exclude_superadmins' for #<Payment

我尝试在查询中包含、加入和合并 table 用户,但均未成功。

看看merge。以下是有关如何在您的场景中使用它的示例。

@payments = Payment.joins(:users).approved.merge(User.exclude_superadmins)