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

时间:2011-06-06 20:07:54

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

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

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

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

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

1 个答案:

答案 0 :(得分: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

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

祝你好运!