3

マッチモデルとチームモデルがあります。一致が保存された後、インスタンスメソッド(チームモデル内に記述されている)を実行したいと思います。これが私が持っているものです。

team.rb

def goals_sum
  unless goal_count_cache
    goal_count = a_goals_sum + b_goals_sum
    update_attribute(:goal_count_cache, goal_count)
  end
  goal_count_cache
end

そしてそれは動作します。一致が保存されるたびにこれを実行する必要があります。だから私はこれを試しました:

match.rb

after_save :Team.goals_sum
after_destroy :Team.goals_sum

そして、それは機能しません。基本的なものが欠けていることはわかっていますが、それでもうまくいきません。任意のヒント?

4

2 に答える 2

3

Matchメソッド onにデリゲートするプライベート メソッド on を定義するだけです(そうしないと、メソッドを実行するチームをどのTeamように知ることができますか? あなたはそれをインスタンス メソッドだと言いますが、試合にはそれをプレイしているチームがあると思います)。

after_save :update_teams_goals_sum
after_destroy :update_teams_goals_sum

private

def update_teams_goals_sum
  [team_a, team_b].each &:goals_sum
end
于 2013-01-11T12:27:49.127 に答える
2
after_save :notify_team
after_destroy :notify_team

private

def notify_team
  Team.goals_sum
end
于 2013-01-11T12:24:44.367 に答える