结合Rails中的记录3

时间:2011-06-03 14:48:27

标签: ruby-on-rails-3 e-commerce

我有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

然而,我觉得这很笨重,可能有更好的方法。那么,在我进一步讨论之前,有没有以这种方式更新现有对象的内置或更好的方法?

谢谢!

1 个答案:

答案 0 :(得分:1)

假设您的交易可以属于产品或属于服务,那么听起来像多变量关联是您最好的选择,并且可能会使您现有的问题变得更加简单。

查看Railscast on Polymorphic Associations

我想你会喜欢并且学到很多东西。