我有一个支付模式,它是活动的多态性
class Payment
belongs_to :activity, polymorphic: true
end
其中一项活动是转介。
class Referral
has_many :payments, :as => :activity
def self.unpaid
where(payments.count == 0)
end
end
我想创建一个类方法,这样我就可以得到所有未支付的推荐。我上面使用这种方法,但在付款时收到undefined_method错误 Referral.first.payments.count工作正常。
我在这里想念的是什么?
答案 0 :(得分:0)
听起来你正在寻找的是ActiveRecord Scopes。使用范围,您可以执行以下操作:
class Referral
has_many :payments, :as => :activity
scope :unpaid, includes(:payments).where('payments.id is null')
end
这将执行付款联接,然后条件将找到所有没有payment.id的列(换句话说,没有付款)。然后你可以做Referral.unpaid.all,看看所有没有加入付款的推荐。