2
我有一個ActiveRecord
模型,它有兩個數據庫屬性,total
和processing_fees
。使用ActiveRecord作用域進行多列計算?
它定義的各種領域,比如(僅僅作爲示例):
class Item < ActiveRecord::Base
scope :completed, joins(:order).where(:orders => {:status => Order::Status::COMPLETED})
scope :for_client, lambda {|client| where("client_id=?", client.id)}
...etc...
end
我可以很容易地做一些事情,如:
Item.completed.for_client(client).sum(:total)
但我想要做的是一樣的東西:
Item.completed.for_client(client).calculate(:total - :processing_fees) # obv not valid
有沒有辦法做這樣的事情?
好吧,那* *很容易。我沒有想到你可以在那裏表達一個表情。在我看來,也許文檔需要更新,因爲它說: 'calculate(operation,column_name,options = {}) 這將計算給定列中的聚合值。' – denishaskin 2012-02-13 17:57:20
@dwhsix:文檔有時會有點薄在這樣的事情上。 Rails經常允許在這些地方放入一段sql。通常經常使用不同類型的參數,例如哈希或數組,其中基本文檔只會談到字段名稱的單個符號。這不僅適用於ActiveRecord。一些助手是很多不同輸入方法的好例子。 – 2012-02-13 18:30:05
同意。我實際上更仔細地再看了文檔,打算也許提供一個編輯。它有一個* final *簡短的例子,表明你可以使用SQL表達式,但它有點微妙。我想也許文檔需要說「column_name或SQL表達式」或類似的東西。我會盡量記住在文檔中的某處進行更改。 – denishaskin 2012-02-14 02:25:31