1

我有這個類:如何找到Ruby on Rails中的相關記錄?

class Invoice < ActiveRecord::Base 

    has_many :payments 

    def payable? 
    amount_payable != 0 
    end 

end 

我怎樣才能得到所有paymentsinvoicetotalpayable

class Payment < ActiveRecord::Base 

    belongs_to :invoice 

    def self.total 
    where("invoices.payable? = ?", true).map(&:amount).sum 
    end 

end 

這個問題似乎是在where條款只接受數據庫列的名字和相同payable?沒有的功能。

誰能告訴我如何做到這一點?

感謝您的任何幫助。

回答

3

您不能運行在SQL的Ruby方法。由於邏輯在這個很簡單,你可以做

where("amount_payable != ?", 0) 

如果你的Ruby方法不能用純SQL表示,唯一的辦法是獲取所有記錄,然後在Ruby中篩選它們(這將是低效),像這樣:

all.select(&:payable?) 
+0

好的,謝謝。這就是我所期望的。 – Tintin81

相關問題