购买后减少票证数量的值

时间:2015-11-19 22:56:08

标签: ruby-on-rails

我正在开发一个rails web应用程序,我有一个票证表,它有一个列' ticket_quantity'。

现在,当一个人购买特定数量的门票时,比方说5,从我存储在" ticket_quantity"中的总门票减少5的最佳方法是什么?列,并在“可用票数”部分显示新票号数量'在视图中。

我知道这是一个菜鸟问题,但我不确定该怎么做。我知道我不应该直接减少/改变db列中的值,因为我需要统计数据的原始值。

2 个答案:

答案 0 :(得分:0)

如果您真的不想改变原始值,这是一个基本的解决方案:

您可能有一个代表购买的模型,在此模型中添加整数列“数量”。您只需将所有“数量”的总和减去“ticket_quantity”值,您就可以获得价值。

答案 1 :(得分:0)

假设您的购物表中有一列tickets_sold,并且您购买的商品属于您的票证,则可以在您的票证模型中为ticket_quantity_available

创建一种方法
class Tickets < ActiveRecord::Base

  has_many :purchases

    def quantity_available
      ticket_quantity - purchases.sum(:tickets_sold)
    end

end

这将使用SQL sum方法来累计已售出的票证并从原始ticket_quantity中减去。只需根据需要使用新方法......

<%= "Tickets available: #{@ticket.quantity_available} %>