Ruby on rails 在Rails中,如何计算一个项目被使用的次数?

Ruby on rails 在Rails中,如何计算一个项目被使用的次数?,ruby-on-rails,Ruby On Rails,查看在交易中使用优惠券的次数。但是,每当我使用count时,我都会得到0:Fixnum的未定义的方法“count” 所以我的桌子有: def change create_table :coupons do |t| t.string :code t.string :applies_to t.decimal :amount_off, precision: 8, scale: 2 t.integer :percent_off t.integer :max_r

查看在交易中使用优惠券的次数。但是,每当我使用count时,我都会得到0:Fixnum的
未定义的方法“count”

所以我的桌子有:

def change
  create_table :coupons do |t|
    t.string :code
    t.string :applies_to
    t.decimal :amount_off, precision: 8, scale: 2
    t.integer :percent_off
    t.integer :max_redemptions
    t.integer :used, :default => 0
    t.datetime :redeem_by
    t.boolean :active, default: true
    t.timestamps null: false
  end
end
那么在我看来,

<% @coupons.each do |coupon| %>
  <%= coupon.code %>
  <%= coupon.used %>
<% end %>
这…有点管用。它看起来只是应用于页面被加载的次数,而不是被使用的次数

进一步审查: 所以看起来以前的开发人员确实应用了增量技术,只是没有应用。有一个具有以下内容的验证:

def increment_coupon_used
 coupon.increment_used! if coupon.present?
 return true
end
然后,该模型具有:

def increment_used!
 update(:used => used + 1)
end

我试图更新使用的增量。\u!更新_属性(:used=>used+1)无效。

由于
used
优惠券上的整数列,您只需调用:

<%= coupon.used %>

如果我能很好地理解您的请求,您正试图获得使用
优惠券的次数。所以,我的答案是

Coupon.group(:code).sum(:used)

由于您试图知道代码使用一张
优惠券的次数,并猜测
used
列存储了您使用优惠券的次数,因此您应该有一个
总和,而不是一个
计数

问题看起来像是您试图注入一个不正确的整数值。为什么不直接打印优惠券。已使用


这就是你想要的。不要尝试在整数上使用内核类注入方法,它基本上是用于像数组

这样的整数集合,但是它实际上并没有更新。这是一个不同的问题。在您记录
优惠券使用情况的代码中,您需要
增加
优惠券
上的
已使用
列“当我使用时”-您想用它实现什么?试图获得优惠券已使用次数的计数这只是
优惠券。当然已使用了
。因为你没有增加它。读书就是读书。与增量/更新分开。它看起来只是应用于页面加载的次数,而不是被使用的次数。这是因为您的
@coups.increment!(:used)
不在良好的工作流程中,我猜它应该在更新方法中,而不是索引中。您认为有多个优惠券具有相同的代码,每个优惠券都有其自己的值
used
正在计算优惠券在交易中使用的次数
,我很确定这正是他所需要的。事实上,他的DB模式看起来很奇怪。我看得出你的解释是怎样的。
Coupon.group(:code).sum(:used)