У меня есть 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
Однако я чувствую, что это очень громоздко и, вероятно, есть лучший способ сделать это. Итак, прежде чем идти дальше, есть ли какие-либо встроенные или более эффективные способы обновления существующих объектов таким способом?
Спасибо!