我有Transaction
个对象组合在Cart
个对象中。一些Transaction
个对象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
然而,我觉得这很笨重,可能有更好的方法。那么,在我进一步讨论之前,有没有以这种方式更新现有对象的内置或更好的方法?
谢谢!
答案 0 :(得分:1)
假设您的交易可以属于产品或属于服务,那么听起来像多变量关联是您最好的选择,并且可能会使您现有的问题变得更加简单。
查看Railscast on Polymorphic Associations。
我想你会喜欢并且学到很多东西。