Ruby on rails 在呈现视图之前,如何在RubyonRails模型中运行计算?

Ruby on rails 在呈现视图之前,如何在RubyonRails模型中运行计算?,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我有一个应用程序,用户可以在其中完成许多测试。这些测试的结果随后存储在数据库中 class TestOne < ActiveRecord::Base belongs_to :user before_save :calculate_total private def calculate_total self.total = self.question_1 + self.question_2 end end classtestone

我有一个应用程序,用户可以在其中完成许多测试。这些测试的结果随后存储在数据库中

class TestOne < ActiveRecord::Base

  belongs_to :user

  before_save :calculate_total

private 

  def calculate_total
    self.total = self.question_1 + self.question_2
  end
end
classtestone
然后我有一个摘要页面,它执行一些计算(在摘要页面模型中),然后这些值显示在摘要页面上

class Summary < ActiveRecord::Base

  def self.amount
    amount = 0
    @users.each do |u|
       if u.test_ones.present?
          amount += 1
       else
       end

       if u.test_twos.present?
       else
       end

       return amount
   end
 end
类摘要
我遇到的问题是,在保存新数据时,计算(金额)不会更新。我假设有一些代码可以放在模型中,使其在呈现摘要视图之前重新计算(类似于另一个模型中保存之前的


提前感谢x

您可以在控制器中使用
before\u action
before\u filter
(Rails 5.1中不推荐)(控制器控件显示视图层,模型处理记录的逻辑。根据您的操作的复杂程度,这可能是一个不好的解决方案。如果需要很长时间,或者流变得复杂,则最好将其排除在控制器之外。有关详细信息,请参阅帖子。还请注意本示例中的渲染流:

def update
  if @tree.update(tree_params) # Render / Re-route based on truthy.
    redirect_to(@tree)
  else
    render('edit')
  end
end

但是,还有其他库专门处理类似的事情。例如,当组件的“属性”或“状态”发生更改时,ReactJs将自动重新呈现组件。仅为此实现React可能会有太多开销,但如果您预期会有大量动态页面数据,则最好使用一些fa自动化视图层组件的javascript的cet。

感谢您的帮助。我似乎仅仅通过在我的摘要模型和测试模型之间建立关联就解决了这个问题。这是一种合适的修复方法吗?如果它有效,并且您乐于维护代码,那么请确定。