我可以在类方法中使用has_many方法吗?

时间:2012-11-01 16:39:22

标签: ruby-on-rails ruby

我有一个支付模式,它是活动的多态性

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工作正常。

我在这里想念的是什么?

1 个答案:

答案 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,看看所有没有加入付款的推荐。