我想在您目前正在從事的項目中獲得您的意見。類方法或named_scope?
class Product
has_many :orders
end
class Order
attr_accessor :deliverable # to contain temporary data on how many items can be delivered for this order
belongs_to :product
end
不知何故,我想有
Order.all_deliverable
,將計算產品的數量,從訂單列表中減去,直到產品是空的或有此產品沒有更多的訂單
到舉例說明
Product A, quantity: 20
Product B, quantity: 0
Order 1, require Product A, quantity: 12
Order 2, require Product B, quantity: 10
Order 3, require Product A, quantity: 100
所以如果我打電話給Order.all_deliverable,它會給
Order 1, deliverable:12
Order 3, deliverable: 8 #(20-12)
我一直在考慮使用named_scope,但我認爲這個邏輯太複雜了,無法存放在named_scope中。任何建議?
爲all_deliverable的僞代碼將是這樣的: 到每個訂單 找到具體的產品 剩餘量中扣除產品的訂單最大金額,如果產品是不夠的,添加的最大產品 加到訂單 結束
從我在網上閱讀的內容來看,named_scope主要處理查找並且沒有太多方法調用和循環。
謝謝你的回答,我不得不同意使用class method.partly,因爲我找不到一個關於named_scope的例子來操縱裏面的變量,所以在這種情況下,我返回一個可以交付的銷售訂單數組 – Hadi 2010-06-03 04:39:48