0
我使用這個功能在我User
模型來填充一個選擇框的形式:通過虛擬屬性而非數據庫字段過濾記錄?
def outstanding_invoices
invoices.to_a.select { |invoice| invoice.balance < 0 }
end
的問題是,balance
不是一個數據庫字段,但計算的東西的方法。
因此,需要大量的SQL查詢來生成選擇框,因爲上面的函數遍歷了所具有的每個單獨的invoice
。
是否有更快的方式來生成選擇框,理想情況下只使用一個SQL查詢?
一個簡單的選擇很可能會在數據庫中存儲的每個invoice
的balance
,但我不知怎麼不願意這樣做,因爲我想保持我的數據庫來最低。
感謝您的任何幫助。
好的,謝謝你的幫助。試圖實現這一點。儘管'update_attributes'方法在這裏引起了'stack overlflow'。除此之外還有其他選擇嗎? – Tintin81
剛剛發現'update_column(:current_balance,balance)'是要走的路。只有通過Rails> = v3.1 ... – Tintin81
'update_attributes'應該可以正常工作 - 確保你沒有任何地方的遞歸方法調用(例如命名衝突)。你也可以嘗試'update_attribute',但這有其他的含義,所以請查看文檔。 –