2011-12-15 26 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