我有Transaction
对象,它们组合在Cart
对象中。一些CCD_ 3对象belong_to
Products
,另一些对象belong_to
Services
。我想在将类似的Transactions
添加到购物车时将其组合起来(即,用新的价格和数量信息更新现有记录)。
以下是我目前拥有的(未经测试):
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
然而,我觉得这非常庞大,可能有更好的方法。那么,在我进一步研究之前,有没有内置或更好的方法可以用这种方式更新现有对象?
谢谢!
假设您的交易可以属于产品或服务,那么听起来多态关联是您的最佳选择,并可能使您现有的问题更加简单。
查看关于多态关联的Railscast。
我想你会喜欢它,学到很多东西。