开发者

Combining Records in Rails 3

开发者 https://www.devze.com 2023-03-10 10:09 出处:网络
I have Transaction objects that are combined in a Cart 开发者_运维技巧object. Some Transaction objects belong_to Products and others belong_to Services. I want to combine similar Transactions when the

I have Transaction objects that are combined in a Cart 开发者_运维技巧object. Some Transaction objects belong_to Products and others belong_to Services. I want to combine similar Transactions when they are added to the cart (ie. update an existing record with new price and quantity information).

Here's what I currently have (untested):

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

However, I feel that this is very bulky and there is probably a better way of doing it. So, before I go any further, is there any built-in or better ways of updating existing objects in this manner?

Thanks!


Assuming your Transaction can belong_to a Product or belong_to a Service, then it sounds like a Polymorphic association is your best bet, and may make your existing problem much simpler.

Check out the Railscast on Polymorphic Associations.

I think you'll like it and learn a lot.

0

精彩评论

暂无评论...
验证码 换一张
取 消