0

我有一个付款模型,它在活动上是多态的

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

我在这里想念什么?

4

1 回答 1

0

在我看来,您正在寻找的是ActiveRecord Scopes。使用范围,你会做这样的事情:

class Referral
  has_many :payments, :as => :activity

  scope :unpaid, includes(:payments).where('payments.id is null')
end

这将对付款执行连接,然后条件将找到所有没有付款的列(换句话说,没有付款)。然后你可以做 Referral.unpaid.all,并查看所有没有联合付款的推荐。

于 2012-11-01T16:49:02.020 回答