Ruby on rails 3 在Rails 3中合并记录
我有Ruby on rails 3 在Rails 3中合并记录,ruby-on-rails-3,e-commerce,Ruby On Rails 3,E Commerce,我有Transaction对象,它们组合在Cart对象中。一些交易对象属于产品,另一些属于服务。我想在将类似的交易添加到购物车时将它们合并起来(即使用新的价格和数量信息更新现有记录) 以下是我目前拥有的(未经测试): 然而,我觉得这是非常庞大的,可能有一个更好的方式做它。因此,在我进一步讨论之前,是否有任何内置的或更好的方法以这种方式更新现有对象 谢谢 假设您的事务可以属于产品或服务,那么多态关联似乎是您的最佳选择,并且可能会使您现有的问题变得更简单 看看这本书 我想你会喜欢它并学到很多东西。那
Transaction
对象,它们组合在Cart
对象中。一些交易
对象属于
产品
,另一些属于
服务
。我想在将类似的交易添加到购物车时将它们合并起来(即使用新的价格和数量信息更新现有记录)
以下是我目前拥有的(未经测试):
然而,我觉得这是非常庞大的,可能有一个更好的方式做它。因此,在我进一步讨论之前,是否有任何内置的或更好的方法以这种方式更新现有对象
谢谢 假设您的事务可以属于产品或服务,那么多态关联似乎是您的最佳选择,并且可能会使您现有的问题变得更简单
看看这本书
我想你会喜欢它并学到很多东西。那么一笔交易可以属于一种产品,也可以属于一种服务?是的,这是正确的。而且,产品和服务没有合并到STI中的原因是,它们的字段差异太大,并且随着时间的推移可能会发生很多变化。然而,我现在正计划将它们组合成一个多态关联(正如下面ardavis所建议的),这应该会简化一点。但是,接下来的问题是,在我的示例中,这段代码的其余部分是实现这一点的最佳方式吗?好的,我刚刚查看了这段视频,并且肯定认为多态关联是一种方式(我最初没有做这件事,现在将实现它,为此感谢+1!)。但是,这对上面的代码有什么影响?我仍然需要检查它是产品还是服务,然后以同样的方式更新这些变量,对吗?我将不得不让其他人尝试一下,:)很高兴我能帮助一些人。
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