我正在开发一个rails web应用程序,我有一个票证表,它有一个列' ticket_quantity'。
现在,当一个人购买特定数量的门票时,比方说5,从我存储在" ticket_quantity"中的总门票减少5的最佳方法是什么?列,并在“可用票数”部分显示新票号数量'在视图中。
我知道这是一个菜鸟问题,但我不确定该怎么做。我知道我不应该直接减少/改变db列中的值,因为我需要统计数据的原始值。
答案 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} %>