我有一個User
模型,其中has_many :scores
。has_many上的更新應更新父類上的屬性
如果我添加一個:分給用戶,用戶應該做的playcounter的重新計算:
class User < ActiveRecord::Base
has_many :scores, inverse_of: :user
accepts_nested_attributes_for :scores
attr_accessible :level
before_save: set_levels
def set_levels
self.level = calculate_level
end
def calculate_level
self.scores.count
end
end
當我通過User.score.create(:time => 10)
加分分數獲取的保存,但水平沒有更新。
如果孩子被綁住,我怎麼能重新運行set_levels
?
(它不是一個countercache列,方法也更復雜,只是在這裏勾勒)
千恩萬謝
嗨安德魯的工作,感謝您的回覆。我有另一種方法解決了我的問題。 – Jan
如果您直接創建樂譜 - 即Score.create(user_id:1,value:123),我認爲您的解決方案不會奏效,因爲它不會更新父項,並觸發用戶級別更新。 –