Ruby on rails Rails不回滚,也不更新属性

Ruby on rails Rails不回滚,也不更新属性,ruby-on-rails,ruby,Ruby On Rails,Ruby,在稍后的终端中,我需要将其添加到迁移中,我要更新代表每个信贷活动的所有活动代码的总活动代码金额。此字段是计数器缓存,要在终端中执行此操作,我有以下脚本: CreditCampaign.all.each do |cc| cc.update!( total_campaign_codes_amount: cc.campaign_codes.count ) end 我的sql中没有收到任何错误,一切都应该正常,但这些值不会保存到-total_campaign_codes_amount

在稍后的终端中,我需要将其添加到迁移中,我要更新代表每个信贷活动的所有活动代码的总活动代码金额。此字段是计数器缓存,要在终端中执行此操作,我有以下脚本:

CreditCampaign.all.each do |cc|
  cc.update!(
    total_campaign_codes_amount: cc.campaign_codes.count
  )
end
我的sql中没有收到任何错误,一切都应该正常,但这些值不会保存到-total_campaign_codes_amount for each CreditCampaign显示0

  CreditCampaign Update (0.2ms)  UPDATE "credit_campaigns" SET "updated_at" = $1 WHERE "credit_campaigns"."id" = $2  [["updated_at", "2019-10-14 15:26:54.010779"], ["id", 1]]
   (0.4ms)  COMMIT
   (0.2ms)  SELECT COUNT(*) FROM "campaign_codes" WHERE "campaign_codes"."credit_campaign_id" = $1  [["credit_campaign_id", 2]]
   (0.1ms)  BEGIN
  CreditCampaign Update (0.2ms)  UPDATE "credit_campaigns" SET "updated_at" = $1 WHERE "credit_campaigns"."id" = $2  [["updated_at", "2019-10-14 15:26:54.013239"], ["id", 2]]
   (0.2ms)  COMMIT
 => [#<CreditCampaign id: 1, amount: 0.25e3, interest_rate: 0.12e2, installment_amount: 0.1e3, duration_in_months: 24, start_date: "2019-10-10", end_date: "2019-11-10", created_at: "2019-10-10 14:54:27", updated_at: "2019-10-14 15:26:54", name: "Credit Campaign #1", total_campaign_codes_amount: 15, used_campaign_codes_amount: 6>, #<CreditCampaign id: 2, amount: 0.1e1, interest_rate: 0.1e1, installment_amount: 0.1e1, duration_in_months: 1, start_date: "2011-01-01", end_date: "2020-01-01", created_at: "2019-10-14 13:40:02", updated_at: "2019-10-14 15:26:54", name: "test", total_campaign_codes_amount: 10, used_campaign_codes_amount: 0>]

我试图使用更新属性!而不是更新!并查找每个而不是所有。每个但没有任何结果。

您无法更新Rails中的计数器缓存列,因为它是通过attr\u readonly添加到包含模型的只读属性列表中的。相反,您应该使用更新计数器或重置计数器