Ruby on rails rails应用程序中的计数器计数不正确--我应该使用增量吗?

Ruby on rails rails应用程序中的计数器计数不正确--我应该使用增量吗?,ruby-on-rails,ruby,caching,Ruby On Rails,Ruby,Caching,我有一个Rails应用程序,具有以下型号: 项目(有许多任务) 任务(属于项目,有许多任务响应) 任务响应(属于任务) 例如,我可能有一个项目,让人们给一只动物拍照。我想让三个不同的人给每只动物拍照,所以拍一只蝴蝶的任务可能会有三种不同的任务反应 我希望跟踪已完成响应的总数,因此我有以下代码: class TaskResponse < ActiveRecord::Base belongs_to :task before_save :update_responses_compl

我有一个Rails应用程序,具有以下型号:

  • 项目
    (有许多任务)
  • 任务
    (属于项目,有许多任务响应)
  • 任务响应
    (属于任务)
例如,我可能有一个项目,让人们给一只动物拍照。我想让三个不同的人给每只动物拍照,所以拍一只蝴蝶的任务可能会有三种不同的任务反应

我希望跟踪已完成响应的总数,因此我有以下代码:

class TaskResponse < ActiveRecord::Base
  belongs_to :task

  before_save :update_responses_completed
  before_save :update_responses_in_progress

  # Statuses
  IN_PROGRESS = 1
  COMPLETED = 2
  SKIPPED = 3

  def update_responses_completed
    ActiveRecord::Base.transaction do
      if self.status == TaskResponse::COMPLETED && self.status_changed?
        # Update task & project counters
        self.task.num_responses_completed += 1
        self.project.num_responses_completed += 1

        self.task.save!
        self.project.save!
      end
    end
  end
end

你能在更新状态的地方发布代码吗?@Thomas Haratyk:添加了代码。当用户填写任务响应表单并提交时,状态就会更新。是否有理由存储数字而不是使用简单的计数?因为你必须处理各种状态更新和行删除等。。。。你关心性能吗?是的,出于性能原因,我存储了一个计数器,而不是每次都计数。(我经常打这些电话。)你能在更新状态的地方发布代码吗?@Thomas Haratyk:添加了代码。当用户填写任务响应表单并提交时,状态就会更新。是否有理由存储数字而不是使用简单的计数?因为你必须处理各种状态更新和行删除等。。。。你关心性能吗?是的,出于性能原因,我存储了一个计数器,而不是每次都计数。(我经常打这些电话。)你能在更新状态的地方发布代码吗?@Thomas Haratyk:添加了代码。当用户填写任务响应表单并提交时,状态就会更新。是否有理由存储数字而不是使用简单的计数?因为你必须处理各种状态更新和行删除等。。。。你关心性能吗?是的,出于性能原因,我存储了一个计数器,而不是每次都计数。(我经常打这些电话。)
class TaskResponsesController
  def update
    tr = TaskResponse.find(params[:id])
    tr.update!(params)
    tr.status = TaskResponse::COMPLETED
    tr.save!
    redirect_to(tr)
  end
end