我有Transaction
對象組合在一個Cart
對象中。一些Transaction
物體belong_to
Products
和其他belong_to
Services
。我想在將它們添加到購物車時結合類似的Transactions
(即用新的價格和數量信息更新現有記錄)。在軌道中合併記錄3
這裏是我現在有(未經測試):
def update_cart
if current_cart.transactions.find(:conditions => [service_id = self.service_id])
@utransaction = current_cart.transaction.find(:conditions => [service_id = self.service_id])
@utransaction.price = @utransaction.price + self.price
@utransaction.save
elsif current_cart.transactions.find(:conditions => [product_id = self.product_id])
@utransaction = current_cart.transactions.find(:conditions => [product_id = self.product_id])
@utransaction.price = @utransaction.price + self.price
@utransaction.quantity = @utransaction.quantity + self.quantity
@utransaction.save
else
nil
end
end
不過,我覺得這是非常龐大的,有可能是這樣做的更好的方法。那麼,在我進一步討論之前,是否有以這種方式更新現有對象的內置或更好的方法?
謝謝!
因此,交易可以屬於產品或屬於服務? – ardavis 2011-06-03 14:51:36
是的,這是正確的。而產品和服務併入STI的原因是因爲他們的領域太過不同,可能會隨着時間的推移而發生很大的變化。不過,我現在計劃將它們組合成一個多態關聯(如下面的ardavis所建議的),這應該簡化一下。但是,那麼問題是,在我的例子中,這段代碼的其餘部分是否是最好的方法? – Justin 2011-06-03 15:05:34