Объединение записей в Rails 3 - PullRequest
0 голосов
/ 03 июня 2011

У меня есть 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 Ответ

1 голос
/ 03 июня 2011

Если ваша Транзакция может принадлежать_Продукту или принадлежать_Конструкции, то это звучит так, как будто Полиморфная ассоциация - ваша лучшая ставка, и она может значительно упростить вашу существующую проблему.

Проверьте Railscast наПолиморфные ассоциации .

Думаю, вам понравится и многому научится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...