2012-11-01 109 views
0

我有一个支付模型这是对活动的多态我可以在类方法中使用has_many方法吗?

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

听起来你在找什么是ActiveRecord Scopes。使用范围,你会做这样的事情:

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

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

这将执行上一支付加盟,然后病情会发现,没有payments.id所有列(换句话说,没有支付) 。然后,您可以执行Referral.unpaid.all,并查看没有加入付款的所有推介。

+0

作品!谢谢! – user1767105

相关问题