2011-12-15 52 views

回答

2

編輯,基於註釋:

好了,你有一個像模型和用戶模型。把功能在用戶的方法來更新普及,然後就像一個after_create或after_save的(如果它可以創建後更改)回調來觸發它誰收到它的用戶:

class User < ActiveRecord::Base 
    has_many :likes 

    def calculate_popularity 
    update_attribute(:popularity, existing_function(foo)) 
    end 
end 

class Like < ActiveRecord::Base 
    belongs_to :user 

    after_create :update_user_popularity 

    def update_user_popularity 
    user.calculate_popularity 
    end 
end 

顯然,如果有什麼接收喜歡是各種各樣的用戶活動,而不是用戶本身,您需要通過關聯挖掘以便從Like到達用戶,但這不應該太難。

+0

除了依賴關係之外,還有一個好的基於一系列記錄進行計算。我想我可以通過將記錄捲到counter_cache或其他東西來作弊。假設你打算爲某人計算一個分數,比如他們基於他們在網站上的所有社交數據中收集的喜好程度。任何時候他們得到一個新的喜歡,他們的分數應該上升。我需要的是,如果這個數據集合有變化,請爲這個特定的對象調用這個函數。而從這個描述中,你看到之前保存也不合適。依賴關係不正確。 – 2011-12-15 20:44:20