Ruby/Rails - 对模型属性执行自动计算

Chr*_*len 0 ruby activerecord ruby-on-rails ruby-on-rails-3

我正致力于在rails中创建游戏,我遇到了创建评分逻辑的问题.

我有一个名为Score的模型,它属于一个用户,并有total_points作为属性.

因此,每次用户创建帖子(或其他)时,我都会自动调整用户的total_score属性.

我有一种感觉,我可以在得分模型中的某处创建一个方法,但之前没有这样做,所以我有点困惑.

Jon*_*han 5

这是ActiveRecord回调的好用例.

#post.rb

  belongs_to :score

  after_create :update_total_score

  protected

  def update_total_score
    score.update_attribute :total_score, score.total_score + new_score_value
  end
Run Code Online (Sandbox Code Playgroud)

注意:如果帖子是可更新的,那么你会想要使用after_save,但我的猜测是after_create就是你要找的东西

祝好运!